Excel中提取混合文本纯数字有四种方法:一、SUBSTITUTE与TEXTJOIN组合;二、FILTERXML配合SUBSTITUTE(仅Windows);三、VBA自定义函数ExtractNumbers;四、Power Query图形化提取。

如果您在Excel中需要从包含字母、符号和数字的混合文本中提取纯数字,但原始数据格式不统一,则可能需要借助多种公式组合来实现。以下是几种有效的提取方法:
一、使用SUBSTITUTE与TEXTJOIN组合提取数字
该方法适用于Excel 365或Excel 2019及以上版本,利用TEXTJOIN函数拼接所有数字字符,通过多次SUBSTITUTE清除非数字字符。
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需数组确认)或直接回车(Excel 365/2019支持动态数组)。
3、将公式向下填充至其他行,适配整列数据。
二、使用FILTERXML配合SUBSTITUTE提取数字(Windows版Excel)
该方法将文本转换为XML结构,利用XPath定位所有数字片段后合并,仅适用于Windows系统且启用FILTERXML函数的Excel版本。
1、在目标单元格输入公式:=TEXTJOIN("",TRUE,FILTERXML(""&SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"0","0"),"1","1"),"2","2"),"3","3"),"4","4"),"5","5"),"6","6"),"7","7"),"8","8"),"9","9")&"
2、按回车确认公式计算结果。
3、检查A1中是否含连续数字,该方法可保留多位连续数字原样提取。
三、使用VBA自定义函数提取数字
当公式复杂度高或需频繁调用时,可通过VBA编写通用函数,绕过公式嵌套限制,支持任意长度混合文本。
1、按Alt+F11打开VBA编辑器,插入新模块。
2、粘贴以下代码:Function ExtractNumbers(cell As Range) As String\nDim i As Integer\nDim result As String\nFor i = 1 To Len(cell.Value)\nIf IsNumeric(Mid(cell.Value, i, 1)) Then result = result & Mid(cell.Value, i, 1)\nNext i\nExtractNumbers = result\nEnd Function
3、返回Excel,在单元格中输入公式:=ExtractNumbers(A1),按回车执行。
四、使用Power Query提取数字(适用于大批量数据)
该方法无需编写公式,适合处理成千上万行数据,通过图形化界面分步操作,自动识别并提取所有数字字符。
1、选中数据列 → 点击「数据」选项卡 → 「从表格/区域」导入为查询。
2、在Power Query编辑器中,右键列标题 → 「转换」→ 「提取」→ 「数字」。
3、点击「关闭并上载」,结果将写入新工作表或现有位置。










