粉丝求助SOS:求助,这种在一个单元格里【...】(中括号)里的数字,怎么求和?
如下图所示:
A2单元格为混合文本组成的字符串,其中包含数字,汉字,标点符号,数学符号等。我们想要对混合文本中“【】”里面的数字相加求和。也就是在A5单元格中显示求和结果:1+2+2+3,结果等于8。
在没有REGEXP函数之前,这个问题还真有点小难,可能要通过若干函数嵌套,用较长的公式解决,看着也不容易让人理解其含义。自从出现了REGEXP正则表达式函数之后,就变得“快准狠”了。
WPS:只有一个regexp函数,通过第3个参数的匹配模式来实现提取、判断、替换功能。
=regexp(原始字符串,正则表达式,[匹配模式],[替换内容])
匹配模式0为提取,1为判断,2为替换。
Excel:有3个正则函数,regexextract用于提取文本、regexreplace用于替换文本、regextest用于测试字符串是否符合正则表达式。
①=regexextract(字符串,正则表达式,[返回模式],[是否区分大小写])
第3参数不选,默认返回一个匹配的值,第4参默认区分大小写匹配项。
②=regexreplace(字符串,正则表达式,替换为,[替换第几个],[是否忽略大小写])
第4个参数指定要替换第几个,为0时替换所有实例,负数则替换倒数第几个。
③=regextest(字符串,正则表达式,是否忽略大小写)
第一步:正则提取数字
我们输入公式:
=REGEXP(A2,"【\d+")
\d+:表示1个或多个连续的任意数字。
【\d+:用“【”与\d+连接,表示所有“【”与任意数字的组合,包括但不限于本例中的:【1,【2,【2,【3。
第二步:重置位置
继续完善正则表达式部分:
=REGEXP(A2,"【\K\d+")
\K:表示重置字符位置。它可以将该符号前面的元素省略,只保留该符号后面的元素。
所以将\K放在“【”的前面,其右面跟随的是\d+,即将上一步公式匹配到结果中的“【”省略,只保留\d+任意数字部分。
这样做的目的是只保留能被运算的数字,符号不要:
{"1","2","2","3"}
第三步:格式转换
继续完善公式:
=REGEXP(A2,"【\K\d+")*1
对REGEXP函数的返回结果乘以1。因为REGEXP函数默认返回的数字为文本型数值,不能参与直接运算。乘以1之后可以转换为真正的数字,可以后续参与运算:
{1,2,2,3}
第四步:简单求和
最外面嵌套SUM求和函数:
=SUM(REGEXP(A2,"【\K\d+")*1)
对REGEXP函数返回的数组溢出结果:{1,2,2,3}中的各元素数字求和即可。