Excel提取手机号:用函数从文本中取出号码

手机号混在姓名、地址或备注里时,固定位数的MID函数经常取错。本文说明如何按11位数字的规律定位号码,给出可直接套用的公式、检查方法和PDF数据的处理方式。

很多表格里,手机号和别的内容挤在同一个单元格:“张三 13800138000 北京朝阳”,或者“电话:138-0013-8000(备注:周一回电)”。这时如果直接用 MID 从固定位置截取,只要姓名长度不同,结果就会错位。这篇文章写给需要批量整理客户名单、报名表或通讯录的人,讲清楚用函数从混合文本里提取手机号的办法。

读完之后,你能用一条公式按“11 位数字、以 1 开头”的规律找出号码,知道哪些情况需要先处理,也能判断结果是否可靠。如果手机号来自 PDF,文末还会说明数据的前置处理方法。

混在文字里的手机号,怎么用函数提取?一句话结论

先用规律找号码,不用固定位置。手机号在中国大陆是 11 位数字且以 1 开头,公式只需要找到这样的片段即可。

你的情况推荐做法原因
号码前面有固定前缀,如“电话:”用 FIND 定位前缀,再用 MID 取 11 位公式简单,速度快,但前缀改变就会出错
姓名、地址长度不一,号码位置不固定用 365 版的 LET、SEQUENCE、FILTER 组合公式逐段检查所有 11 位片段,不依赖位置
旧版 Excel,没有 FILTER 等新函数用辅助列逐个判断,再用筛选或查找功能兼容,步骤多但容易核对
号码带横线或空格先用 SUBSTITUTE 清理,再提取分隔符会打断连续数字,导致取不到
数据来自扫描件 PDF先做 OCR 识别,再导出为 Excel图片中的文字无法直接被函数读取

开始之前:先确认这几点

先看数据的样子。 打开表格,随机看二十行,记下号码前后通常是什么字符。如果总是“电话:”之后出现,用固定前缀定位省事;如果位置乱,才需要按规律查找。这一步能避免用复杂公式处理简单问题。

确认是不是大陆手机号。 公式以“11 位、以 1 开头”为条件,适用于大陆手机号。港澳台、境外号码,或带区号的固定电话,规则不同,需要另外写条件。

检查 Excel 版本。 公式中用到的 FILTER、SEQUENCE 和 LET 属于较新的版本。如果打开后显示#NAME?,说明版本不支持,应改用辅助列的做法。

注意单元格的格式。 如果号码是数字格式,前导的 1 不会有问题,但若原数据是以文本形式保存,公式中的字符判断更稳定。遇到以科学计数法显示的长数字,先把单元格格式改成文本再粘贴数据。

留意原文的分隔符。 横线、空格、括号经常出现在号码中间,比如“138 0013 8000”。它们会切断连续数字,必须先清理。

在 Excel 里用公式提取手机号的步骤

  1. 在 A 列放入原始文本,假设从 A2 开始。
  2. 在空白单元格 B2 输入清理公式:=SUBSTITUTE(SUBSTITUTE(A2,"-","")," ",""),把横线和空格去掉,确认结果里是连续的数字。
  3. 如果你使用的是新版本 Excel,在 C2 输入下面的公式,它会在首尾各加一个空格,确保边界判断正确,然后列出所有 11 位片段,只保留以 1 开头、前后都不是数字的那一个:=LET(p," "&B2&" ",k,SEQUENCE(LEN(p)-12),c,MID(p,k+1,11),ok,ISERROR(--MID(p,k,1))ISERROR(--MID(p,k+12,1))ISNUMBER(--c)(LEFT(c,1)="1")ISERROR(FIND(" ",c)),IFERROR(INDEX(FILTER(c,ok),1),"未找到"))
  4. 按回车确认,C2 显示号码或“未找到”。如果没有找到,检查 B2 中是否真的有 11 位数字。
  5. 把 C2 向下填充到所有数据行。注意公式引用的是 B 列的清理结果,不要直接拖动 A 列公式。
  6. 如果你的表格较旧,没有 FILTER 功能,可在辅助列中用 MID 逐个截取 11 位片段,配合 IF 判断首位是否为 1,再用筛选找出结果。这种做法步骤多,但每一步都能看到中间值,便于排查。
  7. 如果号码有固定前缀,比如“电话:”,可以直接输入=MID(B2,FIND(":",B2)+1,11),这种写法更简单,但前缀不一致时要改用上面的公式。
  8. 将结果列复制为数值,即选择性粘贴为数值,再删除辅助列,这样文件不会因为公式引用而在别处出错。

做完后逐项核对

提取完成后,不要直接交付,至少做下面几项检查。

检查项怎么看有问题怎么办
结果是否都是 11 位在空白列用 LEN 函数统计,看是否都等于 11长度不对的行,单独打开原文本,检查是否有多余数字或漏掉的数字
显示“未找到”的行用筛选功能只显示这类行查看原文,可能是号码写错、带了特殊符号,或确实无号码,需要手动补充
是否误取了其他数字抽查二十行,对照原文如果把身份证号、订单号的一段取出来,说明边界判断没生效,检查前后是否紧贴数字
是否有重复用 COUNTIF 统计每个号码出现的次数重复的号码可能是同一个人多条记录,需要人工判断是否合并
首位是否为 1用 LEFT 函数查看首位不以 1 开头的,通常不是大陆手机号,需要确认来源

提取结果在大量数据中出错的可能性仍然存在,尤其是备注里有其他 11 位数字的情况。关键数据,例如用于通知或结算的号码,应当逐条抽查。

📊 核心对比

三种提取思路各有适用范围,可以按数据的规律选择。

提取思路适合的数据主要限制
固定位置截取(MID 加固定数字)格式完全统一,例如每行都是“编号+号码”,号码永远从第 5 位开始姓名长度不一时会错位,不能使用
固定前缀定位(FIND 加 MID)号码前面有明确标记,例如“手机:”“电话:”前缀写法有差异就会失败
规律查找(11 位数字加首位为 1)位置和前缀都不固定,是本文主要讲的方法公式较长,需要较新版本的 Excel,或改用辅助列

🎯 哪种做法适合你?

  • 如果你的表格量很小,比如几十行,而且格式统一,直接用固定前缀的 MID 公式即可,修改起来也快。
  • 如果是从网页、聊天记录或旧文档中复制来的几百行混合文本,建议使用规律查找的公式,并做抽样核对。
  • 如果你需要在团队中交接,而同事使用的 Excel 版本较旧,优先选择辅助列方案,让每一步都能看见。

❓ 常见问题(FAQ)

1. 号码中间有横线,公式还能用吗?

可以,但要先清理。在公式之前用 SUBSTITUTE 去掉横线和空格,再对清理后的结果提取。直接对原文提取,会因为分隔符切断连续数字而显示“未找到”。

2. PDF 里的手机号怎么提取?

如果 PDF 是文字版,可以在 OmniDoc 桌面客户端的 PDF 编辑器中把内容导出为 Excel,再用上面的公式处理。如果是扫描件,先用 OCR 识别文字,核对识别结果无误后再导出。OCR 识别可能出现数字错误,提取前后都应当核对重要号码。

3. 只有“13800138000”这种完整号码能取出来吗?

能取出完整的 11 位号码。如果原文中是“+86 13800138000”,前面的“+86”不是数字,不影响提取;如果写成“008613800138000”这类形式,就需要额外处理,因为它不是标准的 11 位形式。

4. 为什么有时候会取到错误的号码?

常见原因是原文中有其他长数字,例如身份证号或订单号,而公式的前后边界判断没有生效。先检查单元格中数字前后是否有空格或标点。如果确实紧贴其他数字,就需要人工确认该条记录。

5. 提取出来的号码是文本还是数字?

公式返回的是文本形式。如果后续需要排序或统计,文本排序通常没有问题,但若要做数值运算,号码本身并不需要运算。为避免前导数字或格式变化,建议保持文本格式。

📝 总结

从混合文本中提取手机号,关键是按“11 位数字、以 1 开头、前后不紧贴数字”的规律查找,而不是依赖固定位置。先清理分隔符,再提取,最后抽样核对。数据量大或来自 PDF 时,多花一步检查,能省去后面的返工。

打开 OmniDoc,把 PDF 内容导出为可编辑文件

更新于 2026-11-04