Excel怎么快速提取手机号 批量从杂乱文字中抽选号码

酷伟小哥_3144

酷伟小哥_3144

2026-05-31

631人浏览

原创

wps用户用=regexp(a1,"1[3-9]\d{9}")一键提取首个手机号;excel用户可用数组公式=lookup(9e+307,--mid(a1&"a",row($1:$99),11))暴力遍历;大批量数据推荐power query三重校验;高频处理可部署vba自定义getmobile函数。

excel怎么快速提取手机号 批量从杂乱文字中抽选号码

你需要从Excel里成百上千行混着地址、姓名、备注的杂乱文本中,准确揪出所有11位手机号,不漏提、不错提、不把身份证后11位当号码——这一步卡住很多人,手动翻找一上午也搞不完。

用WPS专属REGEXP函数一键提取(推荐给WPS用户)

WPS表格内置正则函数,无需启VBA、不需Power Query,输入一个公式就能直接返回匹配结果,操作起来很简单,直接在空白单元格写公式就行。

在B1单元格输入:=REGEXP(A1,"1[3-9]\d{9}")

按Enter确认,B1即显示A1中第一个符合规则的手机号;若A1含多个手机号,该公式只返回首个。如需全部提取,改用:=REGEXP(A1,"1[3-9]\d{9}",,1),第四个参数设为1表示返回全部匹配项,以逗号分隔。

向下填充整列,全部文本自动完成扫描。注意:此函数仅WPS支持,Excel原生不识别,强行粘贴会报#NAME?错误。

用Excel原生公式暴力遍历提取(兼容所有Excel版本)

适用于必须用Microsoft Excel且无法启用宏或Power Query的场景,原理是让Excel从第1位到第99位逐个截取11字符,再筛选出纯数字且首位为1的合法号码。

第一步:在B1输入数组公式:=LOOKUP(9E+307,--MID(A1&"a",ROW($1:$99),11))

第二步:按 Ctrl+Shift+Enter 组合键确认(不是回车),公式两端自动加上大括号{},表示进入数组计算模式。

第三步:选中B1→双击填充柄向下拖至数据末行,批量处理整列。

这个公式靠“9E+307”触发LOOKUP模糊查找最大数值的特性,把所有非数字截取结果转为错误值,只留下合法11位数字参与比对。但有个硬伤:如果一行里有两个手机号,它只会返回靠后的那个——因为LOOKUP取的是最后一个有效值。

excel-clean
excel-clean

Excel 数据清洗——去重、填补缺失值、格式转换。

下载

用Power Query智能清洗并筛选(适合大批量、高干扰数据)

当你面对的是上万行嵌套在合同、聊天记录、工单备注里的文本,且里面混着身份证、订单号、固话等多位数字时,Power Query能真正帮你守住“11位+开头是1+第二位是3-9”的三重校验线。

方法一:按非数字拆分 → 筛长度 → 校号段

选中数据列 → 【数据】选项卡 → “从表格/区域”导入(勾选“表包含标题”)→ 进入Power Query编辑器 → 选择该列 → 【转换】→【拆分列】→【按非数字字符】→ 生成多列后,全选新列 → 右键【更改类型】→【整数】→ 出现错误值的自动变null → 添加自定义列,公式填:=if Text.Length(Text.From([Column1]))=11 and Text.Start(Text.From([Column1]),1)="1" and Text.Contains("3456789",Text.Middle(Text.From([Column1]),1,1)) then [Column1] else null → 筛选该列非空 → 【关闭并上载】。

方法二:逐字符拆解 → 向下填充 → 合并连续数字块

右键该列 → 【转换】→【拆分为列】→【按每个字符】→ 全选所有新列 → 【转换】→【数据类型】→【整数】→ 【转换】→【填充】→【向下】→ 【转换】→【合并列】→ 分隔符选“无”→ 添加条件列,判断合并后文本长度是否等于11且首字符为"1" → 筛出真手机号。

用VBA正则函数一次定义、全表复用(适合高频重复处理)

如果你每周都要处理同类数据,值得花3分钟部署一个永久可用的GetMobile函数,之后只需写=GetMobile(A1)就能调用,比每次重输长公式快得多。

按Alt+F11打开VBA编辑器 → 左侧工程资源管理器中右键任一工作簿 →【插入】→【模块】→ 粘贴以下代码:

Function GetMobile(str As String) As String
Dim reg As Object
Set reg = CreateObject("VBScript.RegExp")
With reg
.Pattern = "1[3-9]\d{9}"
.Global = True
End With
If reg.Test(str) Then
GetMobile = reg.Execute(str)(0).Value
Else
GetMobile = ""
End If
End Function

关闭编辑器,回到Excel,在B1输入=GetMobile(A1) → 按Enter → 向下填充。如需提取同一单元格内多个手机号,把代码中reg.Execute(str)(0).Value改为Join(Application.Transpose(Application.Index(reg.Execute(str).Value, 0, 0)), "/"),返回斜杠分隔的全部号码。

注意:首次启用需信任宏,文件保存格式必须为.xlsm,否则函数失效。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

excel

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
excel对比两列数据异同
excel对比两列数据异同

Excel作为数据的小型载体,在日常工作中经常会遇到需要核对两列数据的情况,本专题为大家提供excel对比两列数据异同相关的文章,大家可以免费体验。

2023.07.25

4961

7

excel重复项筛选标色
excel重复项筛选标色

excel的重复项筛选标色功能使我们能够快速找到和处理数据中的重复值。本专题为大家提供excel重复项筛选标色的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.31

3056

5

excel复制表格怎么复制出来和原来一样大
excel复制表格怎么复制出来和原来一样大

本专题为大家带来excel复制表格怎么复制出来和原来一样大相关文章,帮助大家解决问题。

2023.08.02

2840

3

excel表格斜线一分为二
excel表格斜线一分为二

在Excel表格中,我们可以使用斜线将单元格一分为二。本专题为大家带来excel表格斜线一分为二怎么弄的相关文章,希望可以帮到大家。

2023.08.02

1444

3

excel斜线表头一分为二
excel斜线表头一分为二

excel斜线表头一分为二的方法有使用合并单元格功能方法、使用文本框功能方法、使用自定义格式方法。本专题为大家提供excel斜线表头一分为二相关的各种文章、以及下载和课程。

2023.08.02

697

5

绝对引用的输入方法
绝对引用的输入方法

绝对引用允许在公式中引用一个固定的单元格,而不会随着公式的复制和粘贴而改变引用的单元格。本专题为大家提供绝对引用相关内容的文章,大家可以免费体验。

2023.08.09

5148

7

java导出excel
java导出excel

在Java中,我们可以使用Apache POI库来导出Excel文件。本专题提供java导出excel的相关文章,大家可以免费体验。

2023.08.18

6483

6

excel输入值非法
excel输入值非法

在Excel中,当输入的数值非法时,有以下多种处理方法。本专题为大家提供excel输入值非法的相关文章,大家可以免费体验。

2023.08.18

1661

3

excel生成二维码
excel生成二维码

虽然Excel本身并不直接支持生成二维码,但我们可以借助一些插件或宏来实现在Excel中生成二维码的功能。本专题为大家提供excel生成二维码的相关文章。

2023.08.18

2718

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 44万人学习

成为PHP架构师-自制PHP框架
成为PHP架构师-自制PHP框架

共28课时 | 3.5万人学习