当前位置:首页>科技>计算式怎么转换成运算结果计算式转结果的三种方法
发布时间:2026-07-21阅读(2)
各位朋友,你们好。(本文文字较多。绝大部分文字可以直接一带而过,看动图演示即可)
今天和大家分享个不是所有人都需要(比如我的行业是工程造价,在用excel计算工程量的时候,就会经常用到)的功能:将表达式转化为结果(如下图所示)

表达式转结果
对于这个问题。我们有三种方式可以实现:
1、基础操作;2、函数公式;3、VBA自定义函数。
接下来我分别给大家演示这三种方法:
基础操作是利用分列功能实现的,有两种方式可以实现效果,大家直接看动图演示:
1、使用【转换Lotus 1-2-3公式】

转换Lotus 1-2-3公式
2、通过添加等号的方式

表达式前添加等号,然后分列
这里需要给大家介绍一个函数【EVALUATE】:
这个函数在微软的Excel中,是宏表函数,要在工作表中使用,就必须先把函数定义成名称;
这个函数在WPS中,是工作表函数,直接在工作表中就可以使用。
所以,有些朋友收到别人用WPS做的文件时,如果对方在工作表中用了这个函数,就会造成结果错误。
接下来我们还是用动图给大家演示效果:
1、用EVALUATE函数

定义名称方式实现
2、计算式中有注释的情况

计算式中带注释
遇到上图中的情况,我们也可以用EVALUATE函数实现,只是公式变复杂了:
=EVALUATE(SUBSTITUTE(SUBSTITUTE($A1,"【","*ISTEXT(""【"),"】","】"")"))
我们根据公式使用的三个函数,来分解这个很长的公式组合(从里往外分解):
1、结果1 =SUBSTITUTE($A1,"【","*ISTEXT(""【")="198*ISTEXT(""【长】*138*ISTEXT(""【宽】"
目的:将左边的“【”,用SUBStitute函数替换成"*ISTEXT(""【",即添加一个ISTEXT函数在注释符号前面;
2、结果2=SUBSTITUTE(结果1,"】","】"")")="198*ISTEXT(""【长】"")*138*ISTEXT(""【宽】"")"
目的:在后面的“】”后,添加一个括号,这个括号是ISTEXT函数的括号。从第2步的分解可以看出来,通过替换,将注释内容放到了ISTEXT函数里面了。
3、结果3=EVALUATE(结果2)=198*ISTEXT(""【长】"")*138*ISTEXT(""【宽】"")=198*1*238*1
目的:通过ISTEXT函数判断被分离出来的注释部分,判断出是文本格式,得到结果TRUE,转换为数值即为1。
我们用动图演示下效果:

定义复杂的公式
看到这里 ,有人会有疑问:既然通过函数公式完美解决了带注释的计算式计算的问题。还有必要用VBA吗?
我大答案是:很有必要,原因有以下几点:
所以,给各位普及下用VBA自己写一个函数:
1、定义一个解决不带注释计算式的函数,代码如下(代码要放在模块中):
Function Value1(Rng As Range, i As Integer)
Dim a As Double, Str As String 申明变量
Str = "(" & Rng & ")" 将表达式用括号括起来
a = Application.Evaluate(Str) 用EVALUATE函数计算结果
Value1 = Application.Round(a, i) 设置小数位数
End Function
这个代码包含以下信息:
定义的函数名称为:Value1,
这个函数包含两个参数:Rng是引用的单元格,i是要保留的小数位数

初级自定义函数
通过几句简单的代码 ,我们就多了一个可以使用的函数,是不是很神奇?其实,微软内置的函数也是这样一个一个用代码写出来的。只是内置的函数代码更复杂,且代码是经过封装的。
2、计算带注释的计算式,代码怎么写呢?
从上面动图可以看出来,简单的自定义函数,就像简单的定义名称公式一样,不能进行更复杂的判断,所以,要计算带注释的计算式,还需要添加几句处理注释信息的代码:

增加了几句用于判断【】符号的代码,大家从动图直接看效果:

升级版自定义函数
设置自定义函数的优势:
在有些时候,计算比较复杂内容时,会造成计算式特别长,EXCEL中,如果计算式长度达到255字符时,就无法再执行计算了,这时,我们就需要一个更高级的自定义函数,不受计算式长度的影响。
刚好,我在工作中写过这么一个自定义函数,可以实现。
由于函数代码较多,有150余行,不方便贴在文章里面,有需要的朋友,关注我,然后私信发送关键字【表达式计算】获取代码,代码中有注释,大家可以参考。我给大家演示效果:

可以计算3万多字符计算式的函数
这个函数可以计算超级长的计算式。演示中字符串长度到3万多,提示错误,并不是函数不支持那么多的计算,而是计算式的字符数超过了单元格容量的限制了。由于计算式出错,导致公式计算结果的错误。
最后再说下:需要代码的朋友,可以关注我后,私信发送关键字【表达式计算】获取文件和代码。
好了,今天就到这里,感谢各位朋友的关注和支持。
如果你喜欢我分享的内容,请点个赞支持下;
如果你觉得我分享的内容对你有帮助,可以关注我;
如果要看我以前分享过的好玩的内容,大家可以去我的主页查看历史文章。
Copyright © 2024 有趣生活 All Rights Reserve吉ICP备19000289号-5 TXT地图HTML地图XML地图