广东金田纸业有限公司:Excel VBA 中的 FormulaR1C1 方法

来源:百度文库 编辑:偶看新闻 时间:2024/04/30 01:23:27

最近在做项目的时候遇到了在 Excel VBA 代码中给 Sheet 中的单元格内输入公式的问题,自己 Google 了一下,发现 FormulaR1C1 这个函数,这个函数还是很强大的,自己简单了研究一下,为什么 Excel 能实现拖拽单元格时单元格中的公式能智能的根据位置而变换?答案就是这个函数。

FormulaR1C1 是公式输入方法

中括号表示的是相对于选定单元格的相对偏移量,”-”为向左或向上偏移,正数为右或下偏移。

无中括号表示的是相对于选定单元格的绝对偏移量,没有负数。

“R”和”C”表示的是待变“行”和“列”。

如:选定单元格为C8

R[-1]C[-1]为B7单元格,行列都-1,R[1]C[2]为E9单元格,行+1,列+2R1C1代表A1单元格,R5C6代表F5单元格
例:C1单元格为"=A1+B1"Range("C1").FormulaR1C1 = "=RC[-2]+RC[-1]"
例:C1单元格为"=A2+E3"Range("C1").FormulaR1C1 = "=R[1]C[-2]+R[2]C[2]"

关于绝对引用的补充:

例:C1单元格为"=$A$2+$E$3"
Range("C1").FormulaR1C1 = "=R2C1+R3C5"

说明:

如果指定单元格包含常量,本属性返回的就是该常量。如果该单元格为空,本属性将返回一个空字符串。如果该单元格包含公式,本属性将把该公式作为字符串返回,格式与该公式在编辑栏中的显示格式相同(包括等号)。

如果将单元格的格式的值或公式设为日期类型,Microsoft Excel 将检查该单元格的格式是否符合某个日期或时间数组格式,如果不符合,将采用默认的短日期数字格式。

如果指定区域是一维或二维区域,则可将公式指定为 Visual Basic 中相同维数的数组。同样,也可在 Visual Basic 数组中使用公式。

对多重单元格区域设置公式,则该区域中所有单元格都用此公式填充。

Via MSDN