MICROSOFT

EP05. “FormulaR1C1 FormulaR1C1 属性”

首页 Microsoft 工具 Excel · VBA · Create a Macro · EP05
约 5 分钟· #EP05#Excel#Create a Macro
🔒 登录后可标记已读
  • 平常写公式习惯用 A1 样式(比如 B3),但宏录制器录出来的代码常常长得完全不一样——一堆 R、C 和中括号,第一次看容易懵
  • Formula 对应熟悉的 A1 样式,FormulaR1C1 对应"第几行第几列"的 R1C1 样式,两者能算出同一个结果
  • R1C1 样式里有没有中括号,决定这个引用是绝对还是相对,差一个符号意思完全不同
  • 前置知识:基本的 Excel 公式概念
  • 学完能看懂宏录制器自动生成的 R1C1 代码在写什么,不会被中括号吓到

重点内容


适用版本

桌面版通用(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] 相对引用样式——这是宏录制器写代码的固定习惯,不是它选错了。


学完你会

  • ✅ 分清楚 A1 样式和 R1C1 样式两种引用写法
  • ✅ 看懂 R1C1 里有没有中括号代表绝对还是相对引用
  • ✅ 理解为什么宏录制器生成的代码长得跟自己手写的不一样

常见错误

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

Sources

Blog / Website:

  1. FormulaR1C1