我有一个数据集,如下所示:
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。当我尝试在VBA中使用本地化的函数名称时,出现了问题中所述的错误。当我使用相应的英文名称时,一切都会按预期进行。
这是违反直觉的,因为当我通过VBA应用条件格式时,我必须使用本地化的函数名。使用英语那里是行不通的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句