可精准提取混合字符串中的数字,方法包括:一、SUBSTITUTE嵌套+TEXTJOIN;二、WPS VBA正则函数;三、兼容旧版的数组公式;四、提取首个连续数字串;五、WPS智能提取功能。

当Excel或WPS表格中单元格包含数字与字母混合的字符串(如“ABC123XYZ”“订单号:45678”“金额¥99.5”)时,需精准提取其中的纯数字部分。以下是多种可直接套用的函数组合方法:
一、使用SUBSTITUTE嵌套+TEXTJOIN提取所有数字(适用于WPS 2019及以上/Excel 365)
该方法通过逐个替换掉所有非数字字符(A-Z、a-z、标点、空格等),仅保留数字字符,并按原顺序拼接。适用于任意位置混排的数字提取。
1、在目标单元格输入公式:=TEXTJOIN("",TRUE,IF(ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)),MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),""))
2、按Ctrl+Shift+Enter三键组合(若为动态数组版本Excel/WPS可直接回车)
3、将公式向下填充至其他行,自动适配各单元格内容
二、使用正则表达式(WPS专属:支持VBA正则)
WPS表格支持VBA且内置RegExp对象,可通过自定义函数实现稳定、可复用的数字提取,尤其适合含小数、负号、千分位符号的复杂场景。
1、按Alt+F11打开VBA编辑器,插入新模块
2、粘贴以下代码:Function ExtractNumbers(str As String) As String\n Dim reg As Object\n Set reg = CreateObject("VBScript.RegExp")\n With reg\n .Global = True\n .Pattern = "-?\d+\.?\d*"\n If .Test(str) Then ExtractNumbers = .Execute(str)(0).Value Else ExtractNumbers = ""\n End With\nEnd Function
3、返回表格,在单元格中输入公式:=ExtractNumbers(A1)
三、兼容性最强的数组公式法(适用于Excel 2010/WPS旧版)
不依赖TEXTJOIN或正则,仅用基础函数构建,通过逐字符判断+幂次定位实现数字拼接,结果为文本型数字,可配合VALUE转数值。
1、在目标单元格输入公式:=SUMPRODUCT(MID(0&A1,LARGE(INDEX(ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))*ROW(INDIRECT("1:"&LEN(A1))),),0),ROW(INDIRECT("1:"&LEN(A1))))+1,1)*10^ROW(INDIRECT("1:"&LEN(A1)))/10)
2、按Ctrl+Shift+Enter确认为数组公式
3、若需提取多位整数(如“abc456def789”只取首组456),此公式默认返回全部连续数字之和(456+789=1245);如需首组数字,请改用下一方法
四、提取首个连续数字串(含小数点识别)
当字符串中存在多段数字(如“价格:¥299.99,库存:15件”),仅需提取第一个出现的完整数字(含小数),该方法通过SEARCH定位起始、FIND配合循环确定长度。
1、输入辅助公式(B1)查找首个数字位置:=MIN(IF(ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)),ROW(INDIRECT("1:"&LEN(A1))))),按Ctrl+Shift+Enter
2、在C1输入主提取公式:=IFERROR(--MID(A1,B1,MATCH(FALSE,ISNUMBER(--MID(A1,B1+ROW(INDIRECT("1:100"))-1,1)),0)-1),""""),按Ctrl+Shift+Enter
3、复制B1:C1区域并选择性粘贴为值,再删除B列辅助列
五、WPS一键智能提取(图形界面操作法)
WPS表格内置「数据工具」中的「智能提取」功能,无需编写公式,通过可视化交互完成数字抽取,适合零基础用户快速处理批量数据。
1、选中含混合文本的数据列(如A1:A100)
2、点击顶部菜单栏「数据」→「智能提取」→「提取数字」
3、在弹出面板中预览效果,勾选「保留原始格式(如小数位)」,点击「确定」









