在VBA中使用R1C1样式的公式

分类: IT、经济、编程 |
通常,在Excel中采用的A1样式引用单元格,即行号为数字列号为字母。其实,Excel也支持R1C1样式的引用方式,并且这种引用方式在公式中是非常高效的,特别是在VBA中编写公式进行数据处理时。
下面,我们举一个例子,即在VBA中使用R1C1样式的公式建立乘法表。在工作表单元格区域B1:K1中输入数字1至10,在A2:A11中也输入数字1至10,然后在单元格区域B2:K11中获得单元格所在的第1行和第1列的值的乘积。代码很简单:
Sub MultiTable() With Range("B1:K1") .Value = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) .Font.Bold = True .Copy End With Range("A2:A11").PasteSpecial Transpose:=True Range("B2:K11").FormulaR1C1 = "=RC1*R1C" Cells.EntireColumn.AutoFit End Sub |
公式=RC1*R1C很简单,表示“将单元格所在行的第1列单元格和单元格所在列的第1行单元格相乘”。结果如下图所示:
http://www.excelperfect.com/wordpress/wp-content/uploads/2009/08/r1c1sample1.png
再举一个例子,在VBA中使用公式引用不同工作表中的数据进行计算,具体地说,在工作表Sheet3的单元格区域A1:B5中放置工作表Sheet1和工作表Sheet2中相应单元格中的数相减的结果,即工作表Sheet3单元格A1的值等于工作表Sheet1单元格A1的值减去工作表Sheet2单元格A1的值,依次类推。代码很简单:
Sub test() Sheet3.Range("A1:B5").FormulaR1C1 = "=Sheet1!RC-Sheet2!RC" End Sub |
小结
在VBA中使用R1C1样式的公式,能极大地简化计算和代码,尤其是数据量较多时。