Microsoft Lab
全部软件
Excel创建宏(Create a Macro)约 4 分钟

FormulaR1C1 FormulaR1C1 属性

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。


A1 样式(平常写法)

Range("D4").Formula = "=B3*10"

在 D4 输入公式,引用 B3 乘以 10——这是我们平常最熟悉的写法。


R1C1 样式(绝对引用)

Range("D4").FormulaR1C1 = "=R3C2*10"

R3C2 代表"第 3 行、第 2 列",也就是 B3,结果跟上面完全一样。这种写法在 R1C1 样式里等同于带 $ 符号的绝对引用。


R[1]C[1] 样式(相对引用)

Range("D4").FormulaR1C1 = "=R[-1]C[-2]*10"

R[-1]C[-2] 代表"相对于当前单元格(D4),往上 1 行、往左 2 列",算出来一样是 B3,结果跟前两个写法相同,但这是相对引用写法。


方法怎么选

写法适合场景备注
Formula(A1 样式)自己手写公式,平常最熟悉的写法例:Range("D4").Formula = "=B3*10"
FormulaR1C1(绝对引用,如 R3C2)想用行列编号固定引用某一格等同带 $ 符号的绝对引用
FormulaR1C1(相对引用,如 R[-1]C[-2])看懂/修改宏录制器自动生成的代码中括号代表相对当前单元格的偏移量

代码怎么运行

  1. Alt+F11 打开 VBA 编辑器,Insert›Module
  2. 把上面任一段代码贴进去,改成一个 Sub
  3. F5 运行,或回到工作表用命令按钮触发

宏录制器为什么用这个属性

用宏录制器录一次"在 D4 输入 =B3*10",回头看代码会发现 Excel 没有老实生成 Formula 属性,而是自动换成 FormulaR1C1、用 R[1]C[1] 相对引用样式——这是宏录制器写代码的固定习惯,不是它选错了。


学完你会

常见错误

  • 把 R3C2(绝对引用,没有中括号)跟 R[-1]C[-2](相对引用,有中括号)搞混,中括号代表"相对当前单元格的偏移量",没有中括号代表"工作表上固定的第几行第几列"
  • 看录制器生成的 R1C1 代码看不懂,误以为写错了——其实只是引用样式不同,效果一样

Sources

Blog / Website:

  1. FormulaR1C1
只记在你的浏览器里,换设备不会同步。