转转大师PDF转换器
支持40多种格式转换,高效办公
在Excel中,如果我们需要算公式的时候我们一般都是使用宏表函数VALUATE来实现,但是这个有一个不方便的点就在于如果我们算式和计算结果的列相对位置发生变化时,不能直接修改公式,而是要再次定义名称。今天小编就来给大家分享下取代这个又超级方便的操作方法。
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的好处是可以直接向下复制填充公式。
以上就是今天给大家分享的关于完美替代宏表函数EVALUATE的三行代码,有需要的小伙伴们可以根据以上步骤进行操作,如果需要pdf转html可以使用topdf转换器。