EVALUATE函数:“我真的香,还不快来尝尝!”

你好,我是刘卓。欢迎来到我的公号,excel函数解析。今天来分享一个好用的函数——evaluate的用法。我们通常用它来计算一些文本算式,比如"2+3*4"。

其实它不仅可以计算文本算式,还可以对文本名称,文本单元格,文本公式,文本数组等进行引用或计算。

遗憾的是,微软的excel把这个函数“隐藏”起来了,使用的时候要先定义名称,这样就非常的不方便。幸运的是,WPS的有些版本中可以直接使用这个函数。

下面通过一个简单的案例,介绍下evaluate分别在WPS和MS中的使用方法。

-01-

WPS中

下表AB两列是数据源,记录的是各产品的长宽高尺寸。现在的要求是计算出各产品的体积,并把结果写入C列的单元格中。
第1种方法:计算文本算式
在C3单元格输入公式=EVALUATE(B3),下拉填充。WPS中可以直接使用evaluate,并用其计算B3单元格的文本算式。这是最简单,也是我们平时最常用的方法。

第2种方法:计算文本数组

在C3单元格输入公式=PRODUCT(EVALUATE(SUBSTITUTE("{"&B3&"}","*",","))),下拉填充。

SUBSTITUTE("{"&B3&"}","*",",")这部分得到的结果为"{31.5,31.5,25}",是一个文本型数组。在它的外层套个evaluate就能将本文数组转为真正的数组。

EVALUATE(SUBSTITUTE("{"&B3&"}","*",","))这部分返回的结果就是{31.5,31.5,25}。最后用product对长宽高乘积,求出体积。

第3种方法:计算文本公式

在C3单元格输入公式=EVALUATE("product("&SUBSTITUTE(B3,"*",",")&")"),下拉填充。

"product("&SUBSTITUTE(B3,"*",",")&")"这部分得到的结果为"product(31.5,31.5,25)",是一个文本型函数公式。在它的外层套个evaluate,就会对这个函数公式进行计算,并返回它的结果。就相当于使用=PRODUCT(31.5,31.5,25)这个公式。

下面还有2种方法,就不再说明,大家自己学习。至于对文本单元格和文本名称的引用,就和indirect的用法差不多。

-02-

Microsoft中

在MS中,evaluate是个宏表函数,使用前需要先定义名称。使用方法请复习回顾《福利:两个好用的自定义函数(仿textjoin和evaluate)》这篇文章。

像我这种懒人,不喜欢定义名称,太麻烦了。幸好还有filterxml可以使用。在C3单元格输入公式=PRODUCT(FILTERXML("<a><b>"&SUBSTITUTE(B3,"*","</b><b>")&"</b></a>","a/b")),按三键结束,下拉填充。

filterxml的第1参数"<a><b>"&SUBSTITUTE(B3,"*","</b><b>")&"</b></a>"返回的结果为"<a><b>31.5</b><b>31.5</b><b>25</b></a>",是一个xml格式的字符串。

第2参数"a/b"是一个xpath的字符串,用来查找xml中a元素下的所有b元素的文本内容。

filterxml函数返回的结果为{31.5;31.5;25}。最后用product求乘积。

你说,我既不想定义名称,也不会filterxml,就是想直接使用evaluate,有办法吗?这个真的有,可以使用自定义函数。

首先,右键点击工作表名,选择查看代码,打开vbe编辑器。

然后,在你的工作簿下面插入一个模块,在模块中输入下面的代码,最后将工作簿保存为启用宏的工作簿。

接下来,我们就可以使用自定义函数了。如下图所示。

还可以用自定义的myevaluate进行分列。在D13单元格输入公式=INDEX(MYEVALUATE(SUBSTITUTE("{"&$B13&"}","*",",")),COLUMN(A1)),右拉下拉填充。

今天的分享就到这里,希望对你有所帮助。不要忘记一键三连。

链接:

https://pan.baidu.com/s/13xRLffq-WbAFoJgfj2YkQQ

提取码:lpv0
(0)

相关推荐