打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Excel VBA解读(56):在VBA中使用公式2——FormulaArray属性及相关属性
userphoto

2017.05.13

关注

本文接着《Excel VBA解读(55):在VBA中使用公式1——Formula属性和FormulaR1C1属性》,讲解另外几个在VBA中使用公式的Range对象的相关属性。

认识FormulaArray属性

使用VBA在工作表中输入数组公式,要使用FormulaArray属性。

关于FormulaArray属性的官方说明

Range对象的FormulaArray属性返回或设置单元格区域中的数组公式。若指定的单元格区域没有包含数组公式,该属性返回null。

说明:如果使用该属性输入数组公式,那么公式必须使用R1C1引用样式。FormulaArray属性有255个字符的限制。

如下图所示的工作表,合价等于单价乘以数量。在Excel工作表中,我们选择单元格区域D2:D4,输入公式=B2:B4*C2:C4,然后按Ctrl Shift Enter组合键,即输入数组公式,可以得到结果。

下面的VBA代码也可以达到上述效果:

 

示例:汇总每类水果的销售额

在下面的工作表中,列出了6类水果的销售数据。现在,我们想要知道每类水果的销售总额。

思路:

第1步:应用高级筛选(AdvancedFilter方法)得到不重复的水果名称列表。

第2步:应用数组公式汇总每类水果的销售额。

在工作表的单元格G1中输入标题“水果”,单元格G2中输入“销售额”。在VBE中输入如下代码:

运行代码后的结果如图:

其他相关属性

FormulaHidden属性

该属性返回或设置在保护工作表时是否隐藏公式。如果将工作表中单元格区域的FormulaHidden属性设置为真,那么当工作表保护时,将隐藏该区域内的公式。

如下图所示,在单元格A3中有公式,当运行Range(“A1:A3”).FormulaHidden=True且设置保护工作表后,隐藏了该公式(看看编辑栏)。

HasFormula属性

该属性只读,判断是否单元格区域中所有单元格都包含公式(True)。如果单元格区域中没有包含公式,返回False;如果仅某些单元格包含公式,则返回Null。

如下图所示,在当前单元格A3中有公式,因此其HasFormula属性返回True,会弹出相应的信息框。

HasArray属性

该属性只读,返回指定单元格是否包含在含有数组公式的单元格区域。

如下图所示的工作表,其中单元格区域H2:H7含有数组公式。由于单元格H2在数组单元格区域中,因此其HasArray属性返回True;而单元格I2不在数组单元格区域中,因此返回False。

还有两个属性分别对应于Formula属性和FormulaR1C1属性的本地化,即使用用户语言的引用样式:

  • FormulaLocal属性,设置或返回单元格区域的公式,使用用户语言的A1引用样式。

  • FormulaR1C1Local属性,设置或返回单元格区域的公式,使用用户语言的R1C1引用样式。

 在VBA中使用公式示例

在VBA中使用Excel公式,能够充分利用公式的强大能力,体现Excel数据分析与处理的优越性。

示例1:找出两列中不相同的内容

这是《Excel VBA解读(53):高级筛选——AdvancedFilter方法》中的一个示例。如下图所示的工作表,列A和列B中有相同的数据,也有不同的数据,要找出两列中不同的数据并将这些单元格设置红色背景色。

现在,我们在VBA中使用公式来解决这个问题。修改后的代码如下:

说明

  • 代码中使用了MATCH函数查找值。如果找到,则返回值所在的位置;如果没有找到,则返回错误值#N/A。

  • Address属性用于获取单元格地址,详见《Excel VBA解读(40):告诉你单元格住在哪儿——使用Address属性获取单元格地址》。

  • 代码中的IsError函数判断单元格中的内容是否是错误值。如果是,则返回True。

  • 代码中的Clear方法对单元格内容进行清除。

示例2:快速填充单元格区域中的空单元格

如图所示,需要填充工作表中空单元格,这里使用空单元格上一行的单元格内容填充。

代码如下:

其中:Range('A1').CurrentRegion.Value =Range('A1').CurrentRegion.Value语句模似复制粘贴,将单元格区域中的内容转换为数值。

示例3:查找数据并计算

如下图所示的工作表,单元格区域G2:H8为查找表,要求根据列A中的水果名在查找表中查找相应的单价,并计算合价。

程序代码如下:

说明

  • 代码中使用VLOOKUP函数来查找相应的值。注意,如果查找表没有排序,最好指定VLOOKUP函数的最后一个参数值为FALSE。

运行代码后的效果如下图:

扩展

如果查找表的行数不确定,那么我们可以先使用代码找到查找表的最后一行,并在公式中应用变量动态调整。

代码如下:

说明

  • 本例主要演示在公式中引入变量时,代码的正确书写方式,即使用&(连接符)和”(引号)相结合。


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VBA代码完全控制函数公式 批量写入和修改
如何利用VBA代码在单元格中录入公式
完全手册Excel VBA典型实例大全:通过368个例子掌握
Excel 性能
重磅 | Excel VBA解读:Range对象篇
vba编程基础1
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服