C# 如何(是否?)防止数据透视表化导致#DIV/0&引用;当数据丢失时又是什么情况?

C# 如何(是否?)防止数据透视表化导致#DIV/0&引用;当数据丢失时又是什么情况?,c#,excel,pivot-table,excel-interop,C#,Excel,Pivot Table,Excel Interop,我正在生成一个数据透视表,该数据透视表包含项目的月度数据(其中有多少已售出,有多少已售出,以及相关统计数据)。不过,在某些情况下,某一特定商品在一个月或多个月内没有销售。在这种情况下,没有包含“0”值的记录,对于不存在的销售,该记录根本不存在 当显示这样一个项目的数据时,不存在的数据会造成严重破坏。下面的屏幕截图显示了当一个项目在两个月内都有数据(苹果,GALA 5#)和没有数据(苹果,GALA 5#)时会发生什么: 如您所见,当数据以数据透视方式显示时,它不会在“套餐总额”和“采购总额”中输

我正在生成一个数据透视表,该数据透视表包含项目的月度数据(其中有多少已售出,有多少已售出,以及相关统计数据)。不过,在某些情况下,某一特定商品在一个月或多个月内没有销售。在这种情况下,没有包含“0”值的记录,对于不存在的销售,该记录根本不存在

当显示这样一个项目的数据时,不存在的数据会造成严重破坏。下面的屏幕截图显示了当一个项目在两个月内都有数据(苹果,GALA 5#)和没有数据(苹果,GALA 5#)时会发生什么:

如您所见,当数据以数据透视方式显示时,它不会在“套餐总额”和“采购总额”中输入“0”,而是将这些单元格留空,并在“平均价格之和”单元格中插入“#DIV/0!”,然后在“%of Total”单元格中插入“.”

这既没有帮助,也不讨人喜欢。我希望这些单元格中有一系列破折号或零

一种解决方法是为源pivot数据中当前不存在的每个项目创建一行,但这似乎是不必要的,而且在极端情况下是困难的-我必须确定哪些项目有“缺失”的月份,然后为它们提供这些0值

这真的是我需要做的吗?请说不是这样的

更新 提供的答案让我尝试了通过更改数据透视表选项格式VAL会发生什么。从以下数据开始:

…我为err VAL输入了问号,为空单元格输入了破折号:

这导致数据看起来是这样的:

更好了,但仍然不是我想要/期望的。因为这样更好,至少,我会选择一种编程方式来完成同样的事情

我没想到会看到“?”遵循一些“好”的价值观,不过


因此,我可能需要的是编程等效的“对于空单元格,显示破折号”(对于int转换为0,对于decimal转换为$0)。

透视表可以隐藏错误

右键单击透视表并选择透视表选项。在“布局和格式”选项卡上的“格式”下,查找“显示错误值”

这并不完美(“pvt”是数据透视表):

…但它会将缺少的值清空(除了%”单元格中的顽抗“.”之外):

我添加了另一行代码以查看它的功能:

pvt.NullString = "-";
…所以我现在有了这个:

pvt.ErrorString = "";
pvt.DisplayErrorString = true;
pvt.NullString = "-";
…添加最后一行确实有帮助-我得到整数的“0”和小数的“0”,如下所示:

如何以编程方式(预防性地)实现这一点?用户不会想弄乱它。
pvt.ErrorString = "";
pvt.DisplayErrorString = true;
pvt.NullString = "-";