我们都知道当数据过多的时候,我们制作Excel图表就会显得非常的复杂,图表上面的内容就会特别多。Excel老玩家就会想到用切片器制作动态可变化的图表来显示。今天我们就来学习一下一个比......
2023-01-08
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图表就会显得非常的复杂,图表上面的内容就会特别多。Excel老玩家就会想到用切片器制作动态可变化的图表来显示。今天我们就来学习一下一个比......
2023-01-08
在工作中,可能许多朋友都会碰到一个情况,那就是工作簿和工作表数据的合并操作。如何将上百个工作簿快速合并到一个表格中,许多朋友可能会觉得不可思议。今天我们就来教大家学习一......
2023-01-08
今天在这里为你分享5个Excel文本函数,这些拆分和组合函数,你一定会用上的。①LEFT函数公式:=LEFT(A2,1)在Excel表格中,需要想要拆分汉字,想从哪里开始就从那哪里开始。首先选定单元格......
2023-01-08
相信大家也和我一样,才开始看到Excel可以当做翻译软件的时候会很好奇,这究竟是怎样做到的?其实,这个方法并不是很难,它是由一个函数公式而制作出来的,好了,首先我们一起来看看成......
2023-01-08
函数可以说是所用快捷方法中最为简单的一种方法,为什么很多人认为函数用起来很难了?主要是因为它拥有很长的函数公式,记不住。其实不管是学Excel函数,还是学习其他的一些快捷方法......
2023-01-08