我有这个问题无法解决,我正在编写一个 Excel 宏,用于构建一个从表中获取数据的数据透视表。当表中的字段为 0 时,我不想执行计算字段的计算并在数据透视表中显示空白单元格。
我的条件公式是这个:
=IF((field1=0),"",(field1/field2))
将此公式放入VBA中,如下所示
pt.CalculatedFields.Add Name:="ptfieldname", Formula:="=IF((field1=0),"",(field1/field2))"
显示一个空的数据透视表,当我使用数据透视表选项选项卡中的"字段,项目和设置"按钮将相同的公式放入Excel时,效果很好...所以我认为公式是正确的,但是我必须做些什么才能在 VBA 宏中也很好地使其永久化?!
提前致谢
欢迎来到 SO。我自己在这里很新,但最近发现它非常有用。
无论如何,这是你的答案。我通过使用宏录制器来查看它在数据透视表中创建计算字段时使用的确切语法,从而找到了它。希望我找到答案的方法能帮助你在未来自己找到更多的答案。
问题在于您在 VBA 中引用公式的方式。VBA 需要在引号内有实际引号,因此
=IF((field1=0),"",(field1/field2))
在
pt.CalculatedFields.Add Name:="ptfieldname", Formula:="=IF((field1=0),"",(field1/field2))"
需要
=If(field1=0,"""",(field1/field2))