Formula
Excel VBA 解读( 55):在 VBA 中使用公式 1
属性和 FormulaR1C1 ...
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 ,下 拉至单元格 E7Excel 会自动调整单元格相对引用并快速得 出列E中的结果,列F、列G中也类似。但列F中的单元格 I2 不变,因为我们使用了绝对引用,即在行或列前加了    vba 字符串转数组$
号。 使用 R1C1 样式公式如下图:可以看出,第 5 列、第 6 列、第 7 列中每列的公式都是相同的。也就是说,整个区域 都可以使用同样的公式。 R1C1 样式中,字母 R 代表行,字 母 C 代表列, 字母后面的方括号代表相对引用。 字母 R 后面 的方括号中的数字代表相对于当前单元格移动的行数,负数 表示向上移动,正数表示向下移动。字母 C 后面的方括号中 的数字代表相对于当前单元格移动的列数,负数表示向左移 动,正数表示向右移动。例如,如果当前单元格 D5 中输入 =R[1]C[-1],贝y引用的单元格为 C6若字母RC后面就是 数字,没有方括号, 则表示引用为绝对单元格。 例如, =R3C2 引用单元格B3,不管当前单元格处在哪里。若字母    RC
后面既没有方括号也没有数字,贝表示引用与当前单元格相 同的行或列。 为了更好地理解, 下图演示了一些 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@163 也可以在本文下方留言, 提出您的看法或 建议。本文属原创文章,转载请联系我或者注明出处。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。