excel 算式自动计算 使用到了自定义函数EVALUATEVBA来解决
发布时间:2023-06-11 18:36:26
Excel界曾经流行的一个经典问题是求算式计算结果。这个问题的源头很可能来自于工程预算工作。工程预算中的材料规格经常用算式表达,比如2*2、40*50、3.14*15*15等等。预算人员需要把这些算式计算出结果。类似的问题如下图一,第2行算式为1+1,计算结果应为2。尽管算式是小学水平,但表格若有上千行算式,逐行计算手工填列结果非常费时。
经典问题的经典解法是,使用宏表函数EVALUATE。宏表函数EVALUATE经过定义名称才能在工作表使用。假如算式和计算结果的列相对位置发生变化时,不能直接修改公式,而是要再次定义名称,相当不便。
Excelman认为使用自定义函数是不错的替代方法。下面是自定义函数EVALUATEVBA的代码。函数的代码只有三行!诸位几乎不需要考虑任何VBA代码逻辑,简单易用。总之,名副其实拿来即用!
代码如下:
Public Function EVALUATEVBA (ByVal s As String) As Variant
EVALUATEVBA = Application.Evaluate(s)
End Function
自定义函数EVALUATEVBA怎么样使用呢?
先把自定义函数的三行代码添加到工作簿的模块中。之后就能在工作簿里使用自定义函数EVALUATEVBA了。代码添加到工作簿的模块具体操作步骤请看下图二。
那么,函数EVALUATEVBA有什么作用呢?它的作用与宏表函数EVALUATE相似,但用起来方便多啦!
比如上述图一求算式的计算结果问题,B1单元格直接填写公式 =evaluatevba(A2),向下填充公式,OK!
之前Excelman在窝窝的微信公众号发表过一篇《奇招解难题,另类使用Max函数求最大值》。(请点击教程最下面左下角的“阅读原文”访问)。文中表妹的问题若用EVALUATEVBA,做法来得更直接。
如图四,要求从B列的装箱号“1,3,4,5”得到最大值5显示在C列的装箱号最大值。C1单元格填写公式 =evaluatevba("=max({"&B2&"})") 或=MAX(evaluatevba("{"&B2&"}")),向下填充公式,又OK!
从=MAX(evaluatevba("{"&B2&"}"))这个公式可以看出,自定义函数evaluatevba和宏表函数evaluate一样,可以将符合数组书写规则的字符文本,如“{1,3,4,5}”这样的字符文本,转为让Excel函数能够识别的作为计算数据的数组。
Evaluatevba有时给填充公式提供相当大的便利。比如下图四,假设工作簿中有名为“1月、2月、3月”的工作表,A列列示的是工作表名,现在需要在B列分别计算出3个工作表B列的数量(数字)的合计数。可以这样做:B2单元格填写公式
=evaluatevba("=SUM('"&A2&"'!B:B)")&T(NOW())
然后向下填充公式。T(NOW())的作用是令Excel在工作表数据变动时重新计算更新计算结果。B2单元格的公式,其效果与 =SUM('1月'!B:B) 相同,但是使用自定义函数EVALUATEVBA的好处是可以直接向下复制填充公式。
请大家试试简单易用的自定义函数EVALUATEVBA吧,如果喜欢,为我点个赞。
excel 算式自动计算 使用到了自定义函数EVALUATEVBA来解决的下载地址:
猜你喜欢
- 通常我们都是在EXCEL中使用表格,但也有很多时候我们需要在WORD中使用表格,那么如何在WORD中方便快速的插入我们需要的表格呢?下面小编
- 在word 中所谓页边距就是指内容离文档边缘的距离,页边距越大空白位置越多,当然要决定页边距的宽窄还是要取决于工作中的具体需要,例如,当用户
- 在Word2010中内容较多的表格,难免会造成跨两页或者多页的情况,如果希望表格的标题可以自动地出现在页面表格的上方,那么下面就由小编给大家
- 很多使用电脑的小伙伴经常会遇到想要删除文件却发现文件删除不了而且系统提示“操作无法完成,因为其中的文件夹已在另一程序中打开,请关闭该文件或文
- 我们在文档中输入双引号时可能出现这样的现象:在输入右双引号后想接着输入左双引号时,左双引号始终打不出来,而是反复出现右双引号,如下图。&nb
- 在word文档中除了绘制圆形、矩形等标准图形外,还可以绘制任意图形,那么word如何编辑和修饰绘制好的图形?下面小编就为大家详细介绍一下,不
- 绝地求生作为一款非常火爆的游戏,拥有众多的游戏玩家和Win10系统玩绝地求生的时候,玩着玩着就会发现这款游戏崩溃直接退出了。那么这款游戏异常
- 常用Word编辑文档的朋友,对于书签的使用应该不会陌生,它可以帮助用户在文档 * 殊的定位或者是引用某文档中的特定文字。这么说有
- 正如标题所言合并单元格中的内容,方法有很多,如:一个个粘上,或者重新输入一次,数量少还可以如果很多的话,就劳神费力了,再说我们也没有那个时间
- Excel中的median函数怎么使用?median函数的应用虽然不是很广泛,但很多用户都会保留TA的应用方法在记忆中,TA的作用在于可以计
- excel中的数据计算是我们办公中经常都要用到的,有些朋友或许忘记了该要如何操作。下面是小编带来的关于excel表格数据计算的方法,希望阅读
- 字符串处理一直是Excel函数的软肋,动不动就需要多层嵌套,数组公式,有些功能还无法实现,比如用连接符连接文本,用函数几乎是无法做到的,有了
- 在用word2003编辑文档过程中,有时需要批量删除页眉与页脚,那么具体删除页眉的方法是怎么样的呢?下面是小编给大家整理的一些有关word2
- word怎么纵向复制粘贴文字?word中我们经常可以一行一行的复制文字,但是我想直接复制word竖行文字可以吗?有时候想直接复制一篇文中某一
- QQ社群小伙伴的这个问题非常的典型,是vlookup函数的另外一种“模糊”的匹配。牛闪闪给大家系统总结一下解决此类问题的思路。
- 本文主要介绍如何借助Excel中的Vlookup函数进行批量数字调整,以便快速处理大量有变动的数据,比如批量调整工资表。现在有一张清单,其中
- Excel表格多列堆积柱形图怎么做?Excel表格中的数据想要做成多列堆积柱形图,而且还可以显示负数,该怎么制作呢?下面我们就来看看详细的教
- Word文档怎么在表格中画多条斜线,并添加文字。我们在用Word制作表格数据的时候,
- 第一,excel行号列标的设置excel行号列标默认如下图左边所示:ABCD这些是列标,12345这些是行号。excel行号列标如果都变为右
- 本文介绍Microsoft Excel中IMARGUMENT函数的语法和用法。函数说明IMARGUMENT函数的主要作用是返回以弧度表示的角