网友问题:为什么用代码写公式会出现错误? 其代码如下:
Range("A2").Formula = "=SUM(RC6,RC7)"
错误如下图:A2 应该是30,结果显示为0
分析:仔细查看上图公式,发现在普通模式(未勾选R1C1引用样式)下,公式没有转换正确引用单元格。
原因:混淆了 Excel VBA中 Formula 和 FormulaR1C1的写法。
解决方法:按Formula或者FormulaR1C1的方法来写,都可以。
Formula:大多数情况下照抄Excel的公式写法即可。
FormulaR1C1:采用R1C1的写法:
第3行第6列的单元格 $F$3 用 R3C6 表示;
而如果是同行或者同列,则可以省略行号或者列号。当前单元格在第3行的话,则 $F3 可以写成 RC6,$G3可以写成 RC7。
所以,以下写法都能正确得到结果:
Range("A3").Formula = "=SUM($F$3,$G$3)"
Range("A4").Formula = "=SUM(R4C6,R4C7)"
Range("A5").FormulaR1C1 = "=SUM(RC6,RC7)"
而 Range("A2").Formula = "=SUM(RC6,RC7)"会出现错误。
运行结果如下图:
完整代码如下:
Sub Formula_vs_FormulaR1C1()
Range("A2").Formula = "=SUM(RC6,RC7)" ' NG
Range("A3").Formula = "=SUM($F$3,$G$3)" ' ok
Range("A4").Formula = "=SUM(R4C6,R4C7)" ' ok too
Range("A5").FormulaR1C1 = "=SUM(RC6,RC7)" ' OK ' Good
End Sub
PS,可以在Excel选项中勾选R1C1引用样式,再来运行一下Sub看看,看下A2的公式有什么有趣的变化。