泽兴芝士网

一站式 IT 编程学习资源平台

Excel VBA 答疑 1: Formula vs. FormulaR1C1

网友问题:为什么用代码写公式会出现错误? 其代码如下:

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的公式有什么有趣的变化。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言