admin 管理员组文章数量: 1086019
2024年5月19日发(作者:站长之家ping检测)
Excel VBA
解读(
55
):在
VBA
中使用公式
1
属性和
FormulaR1C1
属
...
Formula
在
Excel
中,我们经常使用各种各样的公式来进行数据 的计
算分析和处理,在
VBA
中也不例外。本文将介绍
VBA
中使用公式
的相关属性。为了更好地使用公式,让我们先看 看
Excel
中的
A1
引用样式和
R1C1
引用样式,再来介绍
VBA
中与使用公式相关
的属性。 理解
A1
引用样式和
R1C1
引用 样式
Excel
默认设置
为
A1
样式引用,也就是我们熟悉的行 以数字表示,列以字母表
示。例如,
A1
表示工作表或者单 元格区域左上角的单元格。
Excel
还可以设置为
R1C1
样式引 用,行列都以数字表示。例
如,使用
R1C1
表示工作表左上 角的单元格。此时,需要调出
“
Excel
选项”对话框,勾选 “
R1C1
引用样式”。在下面的工
作表中,我们使用了计算公 式。其中,列
E =
列
C *
列
D
列
F
=
列
E *
单元格
I2
列
G =
列
E
-列
F
单元格
G8 =
单元格区域
G2:G7
之和我们就 以这张工作表来分析理解
A1
样式和
R1
样式。
使用
A1
样 式公式如下图:通常,我们在单元格中输入公式后,往
下拉 即可复制公式。例如,在单元格
E2
中输入公式
=C2*D2
,
下 拉至单元格
E7
,
Excel
会自动调整单元格相对引用并快速得
出列
E
中的结果,列
F
、列
G
中也类似。但列
F
中的单元格
I2
不
变,因为我们使用了绝对引用,即在行或列前加了
$
符
号。 使用
R1C1
样式公式如下图:可以看出,第
5
列、第
6
列、第
7
列中每列的公式都是相同的。也就是说,整个区域 都可
以使用同样的公式。
R1C1
样式中,字母
R
代表行,字 母
C
代
表列, 字母后面的方括号代表相对引用。 字母
R
后面 的方括号
中的数字代表相对于当前单元格移动的行数,负数 表示向上移动,
正数表示向下移动。字母
C
后面的方括号中 的数字代表相对于当
前单元格移动的列数,负数表示向左移 动,正数表示向右移动。例
如,如果当前单元格
D5
中输入
=R[1]C[-1]
,贝
y
引用的单元格
为
C6
。
若字母
R
或
C
后面就是 数字,没有方括号, 则表示引用
为绝对单元格。 例如,
=R3C2
引用单元格
B3
,不管当前单元格处
在哪里。若字母
R
或
C
后面既没有方括号也没有数字,贝表示引用与当前单元格相 同的行
或列。 为了更好地理解, 下图演示了一些
A1
样式和
R1C1
样式
的相对引用和绝对引用的例子。 在
VBA
中,
Range
对象的
Formula
属性和
FormulaR1C1
属性可以让我们分别使 用
A1
样式和
R1C1
样式的公式。 认识
Formula
属性我们通 过一些
简单的示例来认识
Range
对象的
Formula
属性。例如, 对于下
面的工作表,要求在单元格
C1
中放置单元格区域
A1:A5
中的数
值之和。代码如下:结果如下图所示。从编辑 栏可以看出,
VBA
代码在单元格
C1
中放置了公式:
=SUM($A$1:$A$5)
,该公式执
行相应的求和并得到结果。如 果要求在单元格区域
C1:C5
中的每
个单元格中都放置单元格
区域
A1:A5
中的数值之和, 那么只需要将上面的代码中的引 用
区域
Range(
“
C1
”
)
修改为
Range(
“
C1:C5
”
)
。代码如下: 结
果如图下图所示: 认识
FormulaR1C1
属性在上面的示例 中,使
用
FormulaR1C1
属性,也能达到相同的效果。例如, 代码:在单
元格
D1
中放置对单元格区域
A1:A5
中的数值求 和的结果,如下
图所示。我们注意到,在单元格
D1
中显示 的公式与前面使用
Formula
属性显示的公式相同,这是为什 么呢?因为
Excel
默认
设置为
A1
引用样式。 但是在录制宏 时,宏录制器会以
R1C1
样
式来录制输入的公式。例如,对 于上面的工作表, 当前单元格为
C1
,并在该单元格中输入公 式
=SUM($A$1:$A$5)
求单元格区域
A1:A5
中的数值之和。我 们使用宏录制器录制上述操作,代码如
下: 关于
Formula
属性和
FormulaR1C1
属性的官方说明两个属性都返回或者 设置对
象的公式,其中
Formula
属性表示使用
A1
引用样式 表示法,
FormulaR1C1
属性表示使用
R1C1
样式引用。 说明: 如果单元格
中是常量,则返回该常量。如果单元格为空,则 返回空字符串。如
果单元格中是公式,那么
Formula
属性以 字符串形式返回该公
式,该字符串与公式栏中显示的格式相 同(包括等号) 。如果设置
单元格中的值或公式为日期格式,
Excel
将验证单元格是否已经
格式化为日期或者时间数字格 式。如果不是,
Excel
将修改数字
格式为默认的短日期数字 格式。如果单元格区域是一维或二维单元
格区域,那么设置 该公式为相同维度的
VB
数组。类似地,可以将
公式放置到
VBA
数组中。 设置多单元格区域的公式, 使用该公
式填充该 区域内的所有单元格。 为什么要在
VBA
中使用
R1C1
样式 的公式至少有以下三个原因:使用
R1C1
样式的公式,代码
更简洁有效。
R1C1
样式的公式更稳定,通用性强,不会因 为单
元格的变化而修改公式。在
VBA
中的数组公式需要使 用
R1C1
样
式的公式。 下面举例说明。 在本文开头的工作表 中,我们使用
Excel
公式计算相应的数据。现在,我们理解 了
A1
引用样式和
R1C1
引用样式,以及
Formula
属性和
FormulaR1C1
属性后,使
用
VBA
程序来计算表中的数据 (见 下图中红色阴影部分) 。
使用
A1
样式的公式,程序代码如下:使用
R1C1
样式的公 式,
程序代码如下:
下面是两段程序的执行过程视频:
可以看出, 在某一区域中使用
R1C1
样式的公式, 只需一个 公
式,即可对其进行全部计算,非常灵活,代码也更简洁。 再看下面
的例子,我们需要在第
11
行计算合计分。使用
R1C1
样式的公
式,只需一句代码即可完成: 如果您对本文介绍 的内容还有什么
好的示例,欢迎发送邮件给我:
xhdsxfjy@
也可以在本文
下方留言, 提出您的看法或 建议。本文属原创文章,转载请联系
我或者注明出处。
版权声明:本文标题:ExcelVBA解读:在VBA中使用公式1——Formula属性和FormulaR1C1属 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1716129029a691518.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论