加载中…
个人资料
jn_cbl
jn_cbl
  • 博客等级:
  • 博客积分:0
  • 博客访问:14,313
  • 关注人气:4,944
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

在VBA中使用R1C1样式的公式

(2016-04-27 21:12:27)
分类: 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样式的公式,能极大地简化计算和代码,尤其是数据量较多时。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有