可使用五种方法提取excel中杂乱文本的手机号:一、substitute与mid结合数组公式清洗并定位;二、power query提取数字后筛选11位且以13/14/15/17/18/19开头;三、vba正则匹配“1[3-9]\d{9}”;四、excel 365的regexextract函数;五、快速填充手动示范提取。

如果您在Excel中处理包含杂乱文字的单元格,需要从中快速提取手机号码,则可能是由于手机号嵌套在长文本、标点符号或中文字符之间,导致无法直接识别。以下是几种高效提取手机号的方法:
一、使用SUBSTITUTE与MID结合正则逻辑提取
该方法适用于手机号固定为11位且前后无其他连续数字干扰的场景,通过逐层替换非数字字符,再定位长度为11的数字串。
1、在空白列输入公式:=TRIM(MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"0",""),"1",""),"2",""),"3",""),"4",""),"5",""),"6",""),"7",""),"8",""),"9",""),CHAR(10),LEN(A1)))(此为辅助思路,实际需配合数组逻辑)
2、改用更可靠方式:先清理所有非数字字符,使用公式:=TEXTJOIN("",TRUE,IF(ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)),MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),"")),按Ctrl+Shift+Enter确认为数组公式(Excel 365/2021可直接回车)
3、对清洗后的纯数字字符串,用SEARCH查找“1[3-9]”开头的11位子串,再用MID截取:=IFERROR(MID(B1,MIN(IF(ISNUMBER(FIND({"13","14","15","17","18","19"},B1)),FIND({"13","14","15","17","18","19"},B1))),11),"")
二、使用Power Query批量提取
Power Query适合处理大批量非结构化文本,能自动识别并筛选出符合手机号格式的11位数字序列,无需编写复杂公式。
1、选中数据列,点击【数据】→【从表格/区域】,勾选“表包含标题”,确定进入Power Query编辑器
2、右键该列→【转换】→【提取】→【仅数字】,生成新列,得到纯数字字符串
3、添加自定义列,输入公式:if Text.Length([数字列])>=11 then Text.Middle([数字列],0,11) else null
4、再添加条件列,判断是否以“13”、“14”、“15”、“17”、“18”或“19”开头,保留匹配行
三、使用VBA正则表达式精准匹配
正则表达式可严格匹配“1+10位数字”的手机号模式,避免误提身份证号末11位等干扰项,适合有编程基础或需反复执行的用户。
1、按Alt+F11打开VBA编辑器,插入模块,粘贴以下代码:
Function ExtractPhone(str As String) As String Dim regEx As Object Set regEx = CreateObject("VBScript.RegExp") With regEx .Global = True .Pattern = "1[3-9]\d{9}" End With If regEx.Test(str) Then ExtractPhone = regEx.Execute(str)(0).Value Else ExtractPhone = "" End Function
2、返回Excel,在空白单元格输入公式:=ExtractPhone(A1)
3、将公式向下填充,即可批量提取首个匹配的手机号
四、利用Excel 365新函数REGEXEXTRACT(仅限订阅版)
Excel 365及更新版本内置正则函数,无需VBA即可实现一键提取,语法简洁且支持多结果返回。
1、确认您的Excel版本为Microsoft 365 Insider Beta或2024年9月后更新版本
2、在目标单元格输入:=REGEXEXTRACT(A1,"1[3-9]\d{9}")
3、若同一单元格含多个手机号,可追加参数3获取全部匹配项:=REGEXEXTRACT(A1,"1[3-9]\d{9}",3)
五、手动定位+快速填充(低技术门槛法)
适用于样本量小、格式较统一的场景,借助Excel内置“快速填充”功能,由用户示范一次提取逻辑,系统自动学习并延展。
1、在相邻空白列手动输入第一个单元格中的手机号(确保准确无误)
2、选中已填写的单元格及其下方若干空单元格(如B1:B10)
3、按下Ctrl+E触发快速填充,Excel将根据A列文本与B1示例的映射关系自动填充其余结果
4、检查前10行结果是否正确,如有偏差,修改B2内容后再次Ctrl+E重新训练










