夜雨聆风学习资料网

ARTICLE · 1168074

别再手动抠数字了!Excel这个隐藏功能,在文字里自动提取并求和,1秒搞定

别再手动抠数字了!Excel这个隐藏功能,在文字里自动提取并求和,1秒搞定

点击蓝字,关注鹏哥

从“张三出差费用高铁700元,食宿费350元,加班费100元”到完成费用的求和,只需一个公式。

在日常工作中,我们经常会遇到这样的数据:单元格中混杂着文字和数字,比如“张三出差费用高铁700元,食宿费350元,加班费100元”,“订单号YT764726635861、金额100.3元”,“双喜18,红牛49,真龙15.8”。现在需要把其中的数值提取出来并求和,数据量非常小的时候还可以手动一个个抠数字。数据量大了以后,例如100行以上再手动一个个抠就不现实了。

以前大家可能会用LEFT、MID、FIND等函数写嵌套公式以实现,但是逻辑复杂还容易出错。现在,正则表达式函数的出现让混合文本中提取数值变得非常简单。本文将介绍如何利用正则表达式函数,从任意混合文本中提取数值并求和。

1、认识正则函数

首先要说明一个关键区别。目前WPS的表格和微软的Excel都支持正则表达式函数,但实现方式略有区别。

WPS表格:REGEXP函数,一个函数实现提取、替换和判断。

Excel:三个独立函数实现不同的功能——REGEXEXTRACT(提取)、REGEXREPLACE(替换)、REGEXTEST(判断)。

此外,WPS的REGEXP默认返回所有匹配项,而Excel的REGEXEXTRACT默认只返回第一个匹配项,需要将第三参数设为1才能返回所有匹配。

下面以WPS中的REGEXP函数为例进行讲解,Excel用户只需把函数名换成REGEXEXTRACT即可,但注意参数设置。

2、一行搞定提取求和

场景1:提取所有数字并求和

假设A列有一组消费明细,如“双喜18,红牛49,真龙50,咖啡14”,想在C列求和。

在B2单元格输入以下公式:

=SUM(--REGEXP(B2,"\d+"))

然后双击填充柄向下填充即可。

拆解公式:

第一步:REGEXP(B2,"\d+") —— \d+是正则表达式,\d代表任意数字,+表示一位或多位连续数字。这个部分会把B2单元格中的18、49、50、14全部提取出来,得到一个文本数组{"18","49","50","14"}。

第二步:前面的负号 —— REGEXP函数提取出来的数字是文本格式,不能直接参与四则运算。前面加一个负号,把文本数字转换为负数,两个负号便负负得正,这一步是很多初学者容易忽略的关键环节。

第三步:SUM则是求和函数 —— 对转换后的数值数组进行求和,结果131就出来了。

场景2:小数的提取

如果数据中包含小数,比如“张三128.5,李四200”,需要把正则表达式改为:

=SUM(REGEXP(B3,"[0-9.]+")*1)

这里[0-9.]表示匹配0到9的数字或小数点,*1的作用和前面的负号一样,都是将文本数字转为可以计算的数值。

3、精准提取特定数值

提取特定文字前的数字

如果单元格里有多个数字,但只想提取特定位置的值,可以使用零宽断言。例如“ 订单号YT764726635861金额89元 ”,只想要提取“元”前面的消费金额,公式如下:

=SUM(REGEXP(B4,"[0-9.]+(?=元)")/1)

(?=元)是正向先行断言,表示匹配的位置后面必须跟着“元”字,但“元”本身不包含在匹配结果中。这样就能精准提取89,而不会把订单编号数字764726635861提取出来。另外,/1的作用和前面的负号和*1一样。

提取特定文字后的数字

类似地,如果要提取“小饼干”后面的数字,公式如下:

=SUM(REGEXP(B7,"(?<=小饼干)\d+")*1)

(?<=小饼干)是正向后行断言,表示匹配的数字位置前面必须是“小饼干”文本。

常见正则元字符速查

元字符

含义

示例

\d

匹配任意数字

\d+ 匹配连续数字

[0-9.]

匹配数字或小数点

适用于含小数的场景

+

前面的表达式出现1次或多次

\d+

(?=...)

正向先行断言

\d+(?=元)

(?<=...)

正向后行断言

(?<=机修)\d+

4、总结

正则表达式提取数值并进行运算的步骤:正则提取 → 转数值 → SUM求和。掌握\d+、[0-9.]+这两个模式以及(?=...)、(?<=...)两个断言,就能应对绝大多数混合文本的数值提取场景。

当然,还有其他的一些方式比如:=SUM(--REGEXP(B2,"[\d.]+"))这个通用公式可以解决整数小数的混合数据。

以后再遇到“品名+金额”混合的数据,不用再一个个手动抠数字了再进行运算了——一个公式,一键搞定。

 练习素材

序号
费用详情
金额
001
双喜18,红牛49,真龙50,普洱咖啡14
131
002
张三128.5,李四200
328.5
003
订单号YT764726635861金额89元
89
004
双喜18,红牛49,真龙50,咖啡14
50
005
张三出差费用高铁700元,食宿费350元,加班费100元
1150
006
AD钙奶18,小饼干19,糖11.5
19

往期精彩文章导读  

软件下载 | WPS Office 教育考试专用版

软件下载 | 文件搜索神器 Everything

来源:图来自AI、百度和自制

声明:本微信公众号“ 鹏哥学习圈 ”所发表的内容注明来源,版权归原出处所有(无法查证的或未标明著作来源的均来源于网络搜索)。内容的真实性、准确性和合法性由原作者负责。

END

你的

是鹏哥

更新的最大动力!

发财的小手点个赞推荐 或 分享 

祝你有钱有闲!

点上方『头像卡片』 关注鹏哥

求点赞

求分享

求推荐

相关学习资料