我一直在将 FormulaR1C1视为一个函数,它究竟是如何工作的?我了解互联网上所说的内容,即第 1 行第 1 列,但是人们实际上是如何使其工作的呢?使用FormulaR1C1的最终结果是什么?
也可以将其更改为从工作表中的特定点开始,还是始终为 R1C1?那么它可能是FormulaR2C3吗?
FormulaR1C1 与 Formula 具有相同的行为,只是使用 R1C1 样式注释,而不是 A1 注释。在 A1 注释中,您将使用:
Worksheets("Sheet1").Range("A5").Formula = "=A4+A10"
在 R1C1 中,您将使用:
Worksheets("Sheet1").Range("A5").FormulaR1C1 = "=R4C1+R10C1"
它不会作用于第 1 行第 1 列,而是作用于目标单元格或范围。第 1 列与 A 列相同,因此 R4C1 与 A4 相同,R5C2 与 B5 相同,依此类推。
该命令不会更改名称,目标单元格会更改。对于您的 R2C3(也称为 C2)示例:
Worksheets("Sheet1").Range("C2").FormulaR1C1 = "=your formula here"
以下是我博客中关于我如何在 vba 之外使用 formular1c1的一些信息:
您刚刚编写完一个公式,将其复制到整个电子表格,格式化所有内容,然后您意识到您忘记了绝对引用:每个公式都需要引用 Cell B2,但现在,它们都引用了不同的单元格。
考虑到一个单元格有 B5、另一个 C12、第三个 D25 等,你将如何对单元格进行查找/替换?
简单的方法是将您的参考样式更新为 R1C1。R1C1 参考适用于相对定位:R 标记行,C 标记列,R 和 C 后面的数字是相对位置(在 [ ] 之间)或绝对位置(没有 [ ])。
例子:
有什么关系?好吧,当您在本文开头编写第一个公式时,B2 是您编写它的单元格上方 4 行的单元格,即 R[-4]C。当您上下复制它时,当 A1 引用发生变化时,R1C1 引用不会。在整个电子表格中,它是 R[-4]C。如果您切换到 R1C1 参考样式,您可以通过简单的查找/替换将 R[-4]C 替换为 R2C2 ($B$2) 并一举完成。
我发现 .FormulaR1C1 最有价值的特性就是速度。与例如将一些数据填充到工作表中的几个非常大的循环相比,如果您可以将您正在做的事情转换为 .FormulaR1C1 表单。然后单个操作,例如 myrange.FormulaR1C1 = "my specific formuala" 非常快(可以快一千倍)。没有循环和计数 - 只需高速填充范围。