在Excel/WPS中计算带文字的计算式,实现计算式或工程量计算

您所在的位置:网站首页 怎么在excel进行计算 在Excel/WPS中计算带文字的计算式,实现计算式或工程量计算

在Excel/WPS中计算带文字的计算式,实现计算式或工程量计算

2024-06-29 09:13| 来源: 网络整理| 查看: 265

有些工程计算的计算式,是包含文字说明的,若是简单的文字,可以通过Evaluate函数实现,具体实现方法,网上已经有很多说明了,我这里不再介绍。

这里介绍如何通过自定义函数实现带文字计算式的计算功能。

1. 直接对带文字的计算式进行计算

一般这种带文字的计算式,大部分是放在括号内的,比如在小括号内,中括号内等等。有的计算式,在括号内除了文字,还有其他字母符号的等等。

若要进行计算,其实主要是分两步走,第一步是将非计算式的信息删除,得到一个干净的计算式,第二步是将计算式进行计算,得到结果。

在面对第二步时,Evaluate函数还是能比较好用的,但是面对复杂的第一步,一般比较难解决。这里先演示下,采用自定义函数实现计算的效果:

从上面的演示可以看出,当文字带括号内,可以直接得到一个整洁的计算式,然后也可以直接计算出结果。其原理就是通过正则式,将括号内的文字去除,留下计算式,然后直接将计算式计算出结果。

目前这个函数初步编写,只能识别括号内文字,或者单纯文字内容,若是有其他字符,且不在括号内,则会无法识别,也就无法计算了。

那有没有办法解决这个问题呢,答案是有,通过自己输入正则式去匹配计算式。

2. 采用自定义正则式的方式处理计算式

若是有些计算式,比较特殊,想进行计算,该如何做呢,方法就是通过识别计算式的规律,自己编写正则式进行内容提取。

同样是上面的计算式,如何通过正则式实现计算式提取呢。示例如下:

可以看到,输入正则式,就能直接对含有文字的字符串进行提取,然后对提取后的计算式进行计算,得到想要的结果。

那么,难点来了,正则式咋写,我先对上面正则式简单说明下,以最下面这个复杂点的正则式进行说明:

\([^()]*[a-zA-Z\u4e00-\u9fa5]+[^()]*\) //可以拆分为下面及部分: \( : //匹配文本中的左括号 (,括号是特殊字符,所以前面需要加反斜杠 \ 来进行转义 [^()]* : //匹配任意数量的非括号字符,[^()] 表示一个非括号字符(既不是左括号也不是右括号),而 * 表示前面的字符可以出现零次或多次 [a-zA-Z\u4e00-\u9fa5]+ : //这个部分匹配一个或多个字母或中文字符 //a-zA-Z:匹配任何英文字母,无论大小写 //\u4e00-\u9fa5:匹配任何一个中文字符。这是基于Unicode范围的中文字符匹配 //+:表示前面的字符或字符组(在这里是 [a-zA-Z\u4e00-\u9fa5])必须出现至少一次 [^()]* : //这个描述说明同上 \) : //匹配文本中的右括号 ),括号是特殊字符,所以前面需要加反斜杠 \ 来进行转义

这个正则式相对适用范围就比较广了,主要是匹配小括号()内的内容。如果小括号内只有文字,也可以简写为下面部分:

\([\u4e00-\u9fa5]+\) //这个正则式匹配的就是括号内任意中文字符,(任意中文字符)

若是方括号,也有简单的复杂两种写法,具体如下:

\[[^[]*[a-zA-Z\u4e00-\u9fa5]+[^]]*\] //可以匹配方括号内的任意字符 \[[\u4e00-\u9fa5]+\] //可以匹配方括号内的中文字符

基于正则式提取,就能对多个字符串进行处理了。那么有人还是有疑问,还是不会写正则式咋整,也很简单,现在是信息科技的时代,不懂就问AI,比如文心,通义等,它们会告诉你答案。

3. 总结

通过上述方法的描述,可以快速对包含文字的计算式进行求解计算。

当然,这里还有一种情况,就是字符串中只有文字,没有计算式,那该如何计算,这种其实更简单,待我下一篇文章介绍。

自定义函数需要通过安装插件才能使用,无套路免费使用,插件地址我会放在评论区,也可以在我发表的其他文章中查看下载地址。若发现函数有错误,或有什么好的建议或想法,欢迎留言讨论。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3