EP05. “FormulaR1C1 FormulaR1C1 属性”
🔒 登录后可标记已读- 平常写公式习惯用 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]) | 看懂/修改宏录制器自动生成的代码 | 中括号代表相对当前单元格的偏移量 |
代码怎么运行
Alt + F11打开 VBA 编辑器,Insert → Module- 把上面任一段代码贴进去,改成一个 Sub
F5运行,或回到工作表用命令按钮触发
宏录制器为什么用这个属性
用宏录制器录一次"在 D4 输入 =B3*10",回头看代码会发现 Excel 没有老实生成 Formula 属性,而是自动换成 FormulaR1C1、用 R[1]C[1] 相对引用样式——这是宏录制器写代码的固定习惯,不是它选错了。
学完你会
- ✅ 分清楚 A1 样式和 R1C1 样式两种引用写法
- ✅ 看懂 R1C1 里有没有中括号代表绝对还是相对引用
- ✅ 理解为什么宏录制器生成的代码长得跟自己手写的不一样
常见错误
- 把
R3C2(绝对引用,没有中括号)跟R[-1]C[-2](相对引用,有中括号)搞混,中括号代表"相对当前单元格的偏移量",没有中括号代表"工作表上固定的第几行第几列" - 看录制器生成的 R1C1 代码看不懂,误以为写错了——其实只是引用样式不同,效果一样
Sources
Blog / Website: