你好,我是刘卓。欢迎来到我的公号,excel函数解析。今天来分享一个好用的函数——evaluate的用法。我们通常用它来计算一些文本算式,比如"2+3*4"。
其实它不仅可以计算文本算式,还可以对文本名称,文本单元格,文本公式,文本数组等进行引用或计算。
遗憾的是,微软的excel把这个函数“隐藏”起来了,使用的时候要先定义名称,这样就非常的不方便。幸运的是,WPS的有些版本中可以直接使用这个函数。
下面通过一个简单的案例,介绍下evaluate分别在WPS和MS中的使用方法。
WPS中
第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)这个公式。
Microsoft中
像我这种懒人,不喜欢定义名称,太麻烦了。幸好还有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编辑器。
然后,在你的工作簿下面插入一个模块,在模块中输入下面的代码,最后将工作簿保存为启用宏的工作簿。
接下来,我们就可以使用自定义函数了。如下图所示。
今天的分享就到这里,希望对你有所帮助。不要忘记一键三连。
https://pan.baidu.com/s/13xRLffq-WbAFoJgfj2YkQQ
联系客服