本文作者:卫星酱
本文编辑:竺兰
锵锵~ 大家好哇!我是没事儿就整点函数分享的卫星酱~
今天卫某要介绍一个超级好用的WPS 新函数——REGEXP!
大家会从文本中提取数值吗?
像这样的内容:
虽然用的公式比较长:
=RIGHT(LEFT(C3,LEN(C3)-1)LEN(LEFT(C3,LEN(C3)-1))*2-LENB(LEFT(C3,LEN(C3)-1)))
但本质上是先去除单位:
再提取:
比较容易理解;
何况还有【Ctrl+E】这个大杀器(Excel 2013、WPS 12.7 及两者以上版本均可使用),直接帮我们搞定:
但要是碰上这种数据 ↓↓↓
打工人很可能只会上演一场笑容消失术……
但只要请出咱们今天的正主 ——WPS 新函数 REGEXP,问题就迎刃而解了!
REGEXP,是 WPS Office 中的一个文本处理函数(WPS 16894 版本中才有,目前在内测阶段)。
它还有许多的子函数,比如:
REGEXPEXTRACT:提取匹配正则表达式的子字符串。
REGEXPMATCH:判断文本是否匹配正则表达式。
REGEXPREPLACE:替换匹配正则表达式的文本。
如果有同学对此感兴趣,可以在评论区中留言,说不定下一次就介绍它们啦~
这里我们还是回归正题 ——
REGEXP 函数允许用户利用正则表达式来匹配、提取、替换或处理文本数据;
比如,「\d+」就是一个正则表达式,它表示一个或多个数字字符的序列。
如果用「\d+」去匹配文本,它会匹配文本中所有连续的数字。
这就是为什么咱们今天的数据万分需要它:
只需要输入一个短到不可思议的公式:
=REGEXP(B3,"\d+")
就能搞定文本内提取多项数值的复杂问题!
可惜的是,Excel 中并没有这个好用的函数
但要实现类似的功能,也不是没有办法~
按【Alt + F11】打开 VBA 编辑器,右击 VBAProject,选择【插入】- 【模块】。
添加以下代码:
Function RegExpMatch(pattern As String, text As String) As String Dim regEx As Object Set regEx = CreateObject("VBScript.RegExp") regEx.Global = True regEx.MultiLine = True regEx.IgnoreCase = False regEx.Pattern = pattern Dim matches As Object Set matches = regEx.Execute(text) Dim results As String results = "" If Not matches Is Nothing And matches.Count > 0 Then Dim i As Integer For i = 0 To matches.Count - 1 If matches.Item(i).Value <> "" Then results = results & matches.Item(i).Value & ", " End If Next i ' 移除最后一个多余的逗号和空格 If Right(results, 2) = ", " Then results = Left(results, Len(results) - 2) End If End If RegExpMatch = results End Function
然后我们就能使用自定义函数RegExpMatch:
好了,今天给大家带来的是 WPS 新函数 REGEXP,提取文本中所有连续数值的用法,还给出了 Excel 中的替代选项哦~
当然,如果你紧跟潮流,善用 AI,那就更简单了~
只需把图片丢给 AI,并命令「提取其中所有数值,并以纯数字形式返回给我」,直接出结果!
不过,如果数据比较敏感,担心隐私泄露问题,还是用函数自己处理比较好~
本文来自微信公众号:秋叶 Excel (ID:excel100),作者:卫星酱
广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,IT之家所有文章均包含本声明。