【发布时间】:2018-11-12 16:18:39
【问题描述】:
我有一个如下所示的数据集:
A B C
1 10 145
1.1 11 0
1.2 12 0
1.3 13 0
2 14 145
2.1 15 0
2.2 16 0
3 17 145
3.1 18 0
3.2 19 0
表格中的A列和B列是我的输入数据,C列是用以下公式创建的:
=IF(MOD([@A],1)=0,SUM([B]),0)
这是一个简化的示例,而不是我使用的实际公式,但它足以作为一个最小的可重现示例。
当我手动将此公式输入到编辑栏中时,它会完全按预期工作并生成上表中的值。但是,当我尝试使用 VBA 将此公式输入到单元格中时,它会失败。它给了我一个错误:
错误:名称无效
如果我然后单击单元格并进入编辑栏,就好像我想手动操作公式并立即按 Enter 键,而不实际更改公式中的任何内容,则错误消失并且结果再次像以前一样正确显示.
我用来通过 VBA 将公式输入单元格的代码如下:
Sub InputFormula()
Set srcTable = ActiveSheet.ListObjects(1)
fmtString = "=IF(MOD([@A],1)=0,SUM([B]),0)"
Range(srcTable.Name & "[C]").Formula = fmtString
End Sub
为什么明显正确的公式在通过 VBA 应用时会被破坏,我该如何更正它以便通过 VBA 进行应用?
我在 Windows 10 x64 上使用 Excel 2019。
【问题讨论】:
-
我无法重现。我假设这个数据集是一个列表对象/表?
-
在 Excel 2016 中按预期工作。
-
我也没有,您的 Listobject 列有不同的名称吗?即 A B C,在 ListObject 之外不起作用
-
我编辑了问题以反映我使用的是 Excel 2019。数据集位于一个表中。我使用上面提供的完全相同的示例进行了测试,包括值和列名。
-
考虑将最后一行更改为
Range(srcTable.Name & "[C]").Formula = 0-- 以确定提供给Range的参数是问题还是公式本身。