我正在使用VBA(r1c1格式)为Excel编写宏,我想引用始终位于位置E3的单元格。我可以使用哪种语法以 r1c1 格式进行绝对引用?还是有没有办法切换到 A1 并切换回 r1c1?
我到处找,找不到答案...提前谢谢。
如果我=E3
粘在G5
中并=$E$3
G6
然后启动一个VB窗口并在即时窗口中执行此操作:
? ActiveSheet.Range("G5").Formula
=E3
? ActiveSheet.Range("G5").FormulaR1C1
=R[-2]C[-2]
? ActiveSheet.Range("G6").Formula
=$E$3
? ActiveSheet.Range("G6").FormulaR1C1
=R3C5
因此,R 和 C 使其相对于当前单元格。 当数字为负数时,您需要使用方括号,否则 Excel 会认为您正在从无效的单元格引用中减去数字。
编辑:值得一提的是,当绝对与相对时,引用的处理方式不同。
对于相对引用,您从公式所在的单元格开始计数。
E3
离G5
R[-2]C[-2]
远。即向上 2 行,左 2 列。对于绝对值,您从左上角开始计数。所以
E3
R3C5
.即向下 3 行,超过 5 列。 (感谢@GeorgeDooling的澄清)
有时,"Application.ConvertFormula"函数对于在引用样式之间切换很有用。例如,将此添加到即时窗口:
调试打印应用程序。ConvertFormula("=PRODUCT(O7,P$7)",xla1,xlr1c1)
返回这个:
=产品(RC[-5],R7C[-4])
这是一个微不足道的例子,但是当你手上有一个怪物公式时......
此外,VBA 中的引用样式之间的切换通过以下方式完成:
应用。引用样式 = xlA1
或
应用。引用样式 = xlR1C1
R1C1 格式可用于绝对和相对参考。不带括号的 R1C1 是绝对的,当您使用括号时,它是相对的。
无论您在哪里使用它,R3C5
总是指向E3
。如您所知,R[3]C[5]
始终指向当前位置右侧的 3 和 5。
正如乔治·杜林(George Dooling)在其中一条评论中已经说过的那样,R-3C-5
毫无意义的原因是因为你不在表格上。工作表从R1C1
开始,数字只会上升。
至于你的第二个问题,你可以用引号括起来使用 A1 格式。 R3C5
可以毫无问题地编写为FormulaR1C1
内的"E3"
。
R3C5
无括号 = 绝对
编辑公式时在"单元格"窗口中按 f4 将切换相对或绝对