如何在 VBA for Excel 中使用 r1c1 格式进行绝对引用



我正在使用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 会认为您正在从无效的单元格引用中减去数字。

编辑:值得一提的是,当绝对与相对时,引用的处理方式不同。

  • 对于相对引用,您从公式所在的单元格开始计数。 E3G5 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 将切换相对或绝对

最新更新