效率翻倍! wps中regexp+asc+evaluate公式快速结算杂乱内容数据的技巧
网友求助SOS:如何将含杂乱内容的计算过程记录,快速计算出结果?由于这位网友的要求比较特殊,我们简化数据源,用案例进行讲解。
如下图所示:
A2单元格是计算过程的记录:8.7(长)*3.6(宽)-6.1(长)*2(宽)+2,不仅含有原始的文本核心算式:8.7*3.6-6.1*2+2,并且在数字后面还标注了带括号的长或宽的信息。并且括号格式还不一致,有些是中文全角的,有些是英文半角的,这些特殊处理细节都对B2单元格的计算结果增加了难度。
A2单元格的理论计算过程与结果是,我们想要得到的就是B2的结果:
=8.7*3.6-6.1*2+2
=21.12

下面拆解公式,分步骤讲解作用原理。
第一步:统一括号格式
我们输入公式:
=ASC(A2)
全角的1个左/右括号占2个字符的长度,半角的1个左/右括号占1个字符的长度,这个特点我们用肉眼可以观察到。
ASC函数可以将全角字符转换为半角字符。所以全角的左/右括号就转换为了半角的左/右括号。
统一格式后的效果:
"8.7(长)*3.6(宽)-6.1(长)*2(宽)+2"

第二步:删除括号及括号的内容
我们外面嵌套REGEXP正则表达式函数:
=REGEXP(ASC(A2),"\(.*\)")
- \:表示转义符。
- \(:将左括号转换为真正的标点符号左括号
- \):将右括号转换为真正的标点符号右括号
- .*:表示0个或多个连续的字符。
- \(.*\):表示括号及括号里的任意内容。
理论上运用上述正则表达式,REGEXP函数用默认的“提取”模式,可以提取到A2单元格中所有的括号及括号里的任意内容。
但是却出现了下面错误的结果:
(长)*3.6(宽)-6.1(长)*2(宽)

原因REGEXP正则表达式函数默认的是“贪婪模式”,它会尽可能多的匹配内容,它会将:“8.7(长)*3.6(宽)-6.1(长)*2(宽)+2”原始数据中,第一个左括号与最后一个右括号中间的内容全部提取出来:“(长)*3.6(宽)-6.1(长)*2(宽)”
所以我们需要完善正则表达式:
=REGEXP(ASC(A2),"\(.*?\)")
在*后面加上一个?号,?是“贪婪模式”向“懒惰模式”转换的开关,这样转换为懒惰模式后,它会尽可能少的匹配括号里面的内容,只会分别匹配单独的每个括号及括号里面的内容。
最后提取结果以数组溢出的方式显示在一行多个单元格中:
{"(长)","(宽)","(长)","(宽)"}

继续完善正则公式:
=REGEXP(ASC(A2),"\(.*?\)",2,)
=REGEXP(ASC(A2),"\(.*?\)",2,"")
将第三参数由默认的省略或0修改为2,表示“替换”模式,第4参数表示替换为什么,我们跳过或设置为"",表示替换为空值。
即将查找出来的4组括号及括号里面的内容,替换为空,等价于删除4组括号及括号里面的内容。

第三步:计算文本算式
最外面嵌套EVALUATE函数:
=EVALUATE(REGEXP(ASC(A2),"\(.*?\)",2,))
EVALUATE函数是常用的宏表函数之一,用于对以文字表示的一个公式或表达式求值,并返回结果。

该函数不能在微软Office Excel单元格中直接使用,需要使用自定义名称的方法间接调用。
使用WPS表格的朋友可以不用定义名称,直接在工作表中输入公式即可。
相关文章

实现动态装箱计算! wps中ddb+text函数公式的使用技巧
wps中有很多函数组合到一起会达到神奇的效果,比如我们今天用到的ddb+text函数,可以轻松实现现动态装箱计算,详细如下2025-07-30
wps如何开根号? WPS利用AI编写代码统一为数值计算平方根的技巧
wps表格中的数据需要进行开根号计算,虽然我们用SQRT函数可以实现,现在利用ai计算更方便,下面我们就来看看详细教程2025-07-02
怎么实现会员续费到期提醒? wps会员续费到期日期计算实战案例
在进行会员管理的时候,想要将即将到期的会员设置一个续费提醒,该怎么设置呢?下面我们就来看看实例教程2025-04-01
wps如何计算某日期是一年中的第几周? 推算某一年第几周的时间范围
如何计算某一天或某一周是当年的第几周?是否每次都得靠数数?那肯定不能让我的读者这样操作,说出去也丢人不是?今天教大家一种方法,快速计算出日期处于一年中的第几周2025-02-11
wps excel怎么计算不足2小时时间每满30分钟计算一次不足2小时的全部归
今天就和大家分享如何按照这样的规定计算加班时长,不足2小时的全部归零,足2小时的每满30分钟计算一次,怎么算?多学一招,提升自己的能力2025-01-31
不足1小时的部分忽略该怎么计算? wps excel计算算加班时长时的技巧
加班小时不足一小时应该如何算工资呢?统计工作时间计算工资,发现有加班不满足一小时的情况,想要将不足一小时的时间忽略,该怎么操作呢?详细请看下文2025-01-31
wps excel计算时间间隔分钟数不足1分钟的要按1分钟计算该怎么实现?
不足一分钟怎么计费的?想要实现一个问题,就是在打电话不到1分钟按1分钟算,该怎么用excel公式实现呢?详细请看下文介绍2025-01-31
wps excel俩时间相减得负数怎么处理? 跨天计算时间间隔相减得到负数解
wps中两个时间相减得出来的竟然是负数,是计算错误,还是输入错误,该怎么解决呢?下面我们就来看看详细解决办法2025-01-30
wps文档中好多需要输入除法竖式计算,还要有计算步骤,该怎么输入竖式呢?下面我们就来看看wps输入竖式的技巧2025-01-23
WPS如何设置保存工作簿前重新计算 WPS设置保存工作簿前重新计算的方法
WPS如何设置保存工作簿前重新计算?我们只需要点击打开WPS表格文档中的文件选项,再打开“选项”,接着在重新计算页面中先点击选择“手动重算”选项,再点击勾选“保存工作2024-09-26







最新评论