通过VBA向单元格添加公式的问题:如何显示SUM公式
嗨,这个问题我刚好碰到过,很容易解决!
你之前的代码问题在于,直接把VBA里的Range(Cells(...), Cells(...))写到了公式字符串里——这是VBA的语法,Excel的公式根本认不出来它是什么,所以得把这个VBA范围转换成Excel能识别的单元格引用格式才行。
正确的写法
你需要用VBA的Address方法把这个范围转换成A1样式的地址字符串,然后拼接到SUM公式里,代码应该是这样的:
Cells(NewLastRowNumber, 2).Formula = "=SUM(" & Range(Cells(NewLastRowNumber + 8, 3), Cells(LastRowNumber, 3)).Address & ")"
这样赋值之后,单元格里就会出现类似=SUM(C10:C25)的公式(具体行号取决于你的变量值),而不是直接的计算结果。
额外说明
如果你想要单元格直接显示公式文本(而不是计算后的数值),有两种方式:
- 一种是先把单元格格式设置为文本,再赋值公式:
With Cells(NewLastRowNumber, 2) .NumberFormat = "@" .Value = "=SUM(" & Range(Cells(NewLastRowNumber + 8, 3), Cells(LastRowNumber, 3)).Address & ")" End With - 另一种是开启Excel的「显示公式」模式,这样所有单元格都会显示公式而不是结果:
Application.DisplayFormula = True
不过第一种方式是针对单个单元格的,第二种是全局的,你可以按需选择。
之前你用WorksheetFunction.Sum是直接在VBA里计算出结果再赋值给单元格,所以单元格里只有数值;而用.Formula属性赋值正确的公式字符串,就能让单元格保留公式本身啦。
内容的提问来源于stack exchange,提问作者CptGoodar
相关产品推荐
相关产品推荐

