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

本文介绍了如何通过自定义函数结合正则表达式处理带有文字说明的计算式,包括去除非计算信息并提取括号内的内容,以及针对特殊计算式编写正则式的方法。最后提到AI工具如文心、通义等可用于学习正则式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有些工程计算的计算式,是包含文字说明的,若是简单的文字,可以通过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. 总结

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

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值