- R 代表行,C 代表列;
- 方括号 `[]` 内的数值表示相对当前单元格的偏移量正数向下/向右,负数向上/向左;
- 若省略方括号如 `R1C1`,则表示绝对引用对应行号和列号的单元格。
二、相对引用的实现
相对引用通过方括号内的正负数值表示偏移量,需固定行或列。例如:
- 当前单元格为A1R1C1,公式引用右侧1列、下方1行的B2单元格,表达式为 `=R[1]C[1]`;
- 当前单元格为C3R3C3,引用左侧2列、上方3行的A0实际为A1,因行号从1开始,表达式为 `=R[-2]C[-2]`。
三、绝对引用的实现
绝对引用通过直接指定行号和列号实现,不加方括号,即固定引用某一单元格。例如:
- 引用A1$A$1的绝对表达式为 `=R1C1`;
- 引用B3$B$3的绝对表达式为 `=R3C2`B列对应列号2。
四、混合引用的实现
混合引用需固定行或列的绝对位置,同时保留另一方向的相对偏移。例如:
- 固定列、相对行:引用$A2A列固定,行随当前单元格变化,若当前单元格为B3,表达式为 `=R[-1]C1`C1代表A列绝对引用,R[-1]代表行向上偏移1;
- 固定行、相对列:引用A$2行2固定,列随当前单元格变化,若当前单元格为C3,表达式为 `=R2C[-2]`R2代表行2绝对引用,C[-2]代表列向左偏移2。
五、实际应用示例
Range对象的FormulaR1C1属性可直接批量设置公式,需逐个单元格定义。例如,需在D1:D10填充“=A列值+B列值×C列值”:
```vba
Range("D1:D10").FormulaR1C1 = "=RC[-3]+RC[-2]*RC[-1]"
```
- `RC[-3]` 表示当前单元格向左偏移3列A列;
- `RC[-2]` 表示向左偏移2列B列;
- `RC[-1]` 表示向左偏移1列C列。
执行后,D1:D10的公式会自动适配各自位置,如D5的公式实际为“=A5+B5*C5”。
通过FormulaR1C1,开发者可脱离A1样式的列字母限制,用数值偏移灵活定义公式,尤其在循环或动态区域操作中能显著提升代码效率。掌握其引用逻辑,能大幅简化VBA公式设置的复杂度。
Excel VBA中formular1c1如何使用?
Excel VBA中FormulaR1C1的实用指南
在Excel VBA中,FormulaR1C1是设置单元格公式的重要属性,其核心优势在于支持相对引用与绝对引用的灵活表达,尤其适合批量填充或动态公式场景。相比传统的A1引用样式,R1C1通过“行Row”和“列Column”的数值关系定义引用,更便于VBA代码中的逻辑控制。
一、FormulaR1C1的基本语法
R[行偏移量]C[列偏移量] 是FormulaR1C1的核心表达格式。其中:
