它是如何(是吗?)阻止数据的PivotTablization导致" #DIV / 0!"如果缺少数据?

时间:2016-10-20 17:42:57

标签: c# excel pivot-table excel-interop

我正在生成一个数据透视表,该数据透视表由项目的月度数据(已售出的数量,销售数量和相关统计数据)组成。但是,在某些情况下,一个或多个月内没有特定商品的销售。在这种情况下,没有记录包含" 0"对于不存在的销售,该记录根本不存在。

当显示这样的项目数据时,不存在的数据会造成严重破坏。下面的屏幕截图显示了当一个项目确实拥有两个月的数据(APPLES,GALA 5#)以及它没有(APPLES,GALA 5#)时会发生什么:

enter image description here

所以你可以看到,当数据是PivotTablized时,而不是放一个" 0" in" Total Packages"和"总购买量"它将这些单元格留空并插入" #DIV / 0!"在平均价格总和中"细胞 - 然后是"。"总计"%"%细胞

这对眼睛没有帮助或赏心悦目。我希望在这些单元格或零中有一系列破折号。

一种解决方法是在源数据透视数据中为每个当前不存在的行创建一行,但这似乎是不必要的,并且极其糟糕 - 我必须确定哪些项目已经缺少"几个月,然后为他们提供这0个值。

这真的是我需要做的吗?请说出来了!

更新

提供的答案促使我尝试通过更改数据透视表选项格式值来实现。有了这些数据:

enter image description here

...我为err vals输入了一个问号,并为空单元格输入了一个短划线:

enter image description here

这导致数据看起来像这样:

enter image description here

更好,但仍然不是我想要/期望的。因为它更好,至少,我会采用一种程序化的方式来完成同样的事情。

我不期待看到"?"关注一些" good"价值观虽然......

所以我可能需要的是程序化等效的"对于空单元格,显示短划线" (转换为0表示int,$ 0表示十进制)。

2 个答案:

答案 0 :(得分:3)

数据透视表可以隐藏错误。

右键单击数据透视表,然后选择数据透视表选项。在布局和格式标签上,在格式下,查找有关错误值显示

Pivot Table error handling

答案 1 :(得分:0)

This is not perfect ("pvt" is the PivotTable):

pvt.ErrorString = "";
pvt.DisplayErrorString = true;

...but it does blank out (except for a recalcitrant "." in the %" cell) the missing values:

enter image description here

I added another line of code to see what it would do:

pvt.NullString = "-";

...so I now have this:

pvt.ErrorString = "";
pvt.DisplayErrorString = true;
pvt.NullString = "-";

...and adding that last line did help - I get the "0" for ints and "$0" for decimals like so:

enter image description here