Excel 公式

Excel 怎么从身份证提取生日、从文本提取手机号

更新于 2026-06-04 · 阅读约 7 分钟

工作中常碰到两类需求:一是从 18 位身份证号里取出出生日期和性别,二是从一段备注文字里把手机号抓出来。本文先给出每种情况的 Excel 公式写法,再教你用超级表的 AI 功能一句话批量抽取——身份证、手机号这类敏感信息全程留在本地,不上传任何服务器。


超级表中从一列文本里抽取出生日/手机号到新列的示意
从身份证/文本里抽出生日、手机号——超级表里一句话让 AI 抽。

从身份证号提取出生日期

中国 18 位居民身份证号的结构是固定的:第 1–6 位为地区码,第 7–14 位为出生日期(格式 YYYYMMDD),第 15–17 位为顺序码,第 18 位为校验位。因此只要用 MID 截取第 7 位起共 8 个字符,就拿到了原始生日字符串。

假设身份证号在 A2 单元格,在 B2 写:

=MID(A2,7,8)

这会返回类似 19901215 的 8 位纯数字字符串。如果希望显示成 1990-12-15 这种带连字符的日期格式,用 TEXT 套一层:

=TEXT(MID(A2,7,8),"0000-00-00")

如果你希望结果是真正的 Excel 日期值(可以参与日期运算),再套一层 DATEVALUE

=DATEVALUE(TEXT(MID(A2,7,8),"0000-00-00"))

拿到日期值之后,把单元格格式设置为「日期」,就能正常显示并参与「计算年龄」等运算了。

实战小技巧
如果源数据的身份证号前后有多余空格,先用 =TRIM(A2) 清掉再传给 MID,否则位置会偏移,取出的日期是错的。

从身份证号判断性别

身份证第 17 位(顺序码的最后一位)决定性别:奇数为男,偶数为女。公式逻辑:先用 MID 取第 17 位,转成数字后用 MOD 对 2 取余,再用 IF 判断:

=IF(MOD(MID(A2,17,1),2),"男","女")

拆开解读:

  • MID(A2,17,1) — 取第 17 位字符(文本型数字);
  • MOD(...,2) — 对 2 取余,奇数得 1、偶数得 0;
  • IF(1,..."男"...) — 非零为真,返回"男";零为假,返回"女"。

如果需要同时在一个单元格里返回生日和性别,可以用 & 拼接,或分两列放,后续用列拆分整理。

从文本里提取手机号

相比身份证的固定位置,「从一段话里抠手机号」要难得多——手机号可能在句首、句中、句尾,前后混杂汉字、标点,格式也不统一(有时中间有空格或短横线)。

Excel 传统公式的思路是:先找到第一个数字的位置,然后连续截取 11 位。可以借助辅助列,用 MIN(FIND({0,1,2,3,4,5,6,7,8,9},A2&"0123456789")) 定位数字起始位,再 MID 截取。这条公式在数据整洁时大体能用,但碰到以下情形就会出错或需要大量改造:

  • 文本里有多个数字串(如「第 3 组,联系人 13800138000」);
  • 手机号中间带空格(如 138 0013 8000);
  • 文本里没有数字,公式报错;
  • 号码不以 1 开头的非标准格式。

Excel 2021 / Microsoft 365 新版加入了 REGEXEXTRACT(部分 365 版本),可以写正则 =REGEXEXTRACT(A2,"1[3-9]\d{9}") 来提取标准手机号,但这个函数在 WPS 和旧版 Excel 里不存在,兼容性差。

一句话总结痛点
提取手机号没有一条放之四海皆准的 Excel 公式——文本越乱,公式越长,兼容性越差。身份证生日好在位置固定,还能用 MID 撑过去;手机号提取到了公式的能力边界。

这些公式办法的局限

把以上两类需求放在一起看,传统 Excel 公式有几个共同短板:

  • 公式长、易出错:哪怕是「提取生日」这个相对简单的需求,也要嵌套三层 DATEVALUE(TEXT(MID(...))),稍有失误就报错,不熟悉函数的同事看一眼就晕。
  • 不规则文本搞不定:身份证前有空格、手机号中间带横线、备注字段里夹着其他数字——这些情况让公式逻辑急剧复杂,往往需要多个辅助列才能处理干净。
  • 批量处理费时:几千行数据每列都要拖公式,某列出了问题还要逐行排查,效率很低。
  • 结果是公式不是值:交付给别人的表,公式里引用的原始列一动,结果就全变,还得手动「粘贴为值」。

对于身份证、手机号这类敏感信息,很多团队还有额外顾虑:如果用在线公式插件或直接把表格传给 AI 服务,数据会不会被上传到第三方服务器?

更简单:超级表 AI 一句话抽取

超级表(TableDI)是一款在 macOS / Windows 上本地运行的桌面端高能表格助手,内置 AI 处理功能,可以用自然语言描述你想做的事,让 AI 帮你生成新列。关键一点:超级表离线运行,数据不上传任何服务器,身份证号、手机号全程只存在本地磁盘,适合处理敏感信息。

用超级表提取生日和手机号的步骤如下:

  1. 把含有身份证号或备注文本的表格(Excel / CSV)拖进超级表,或直接粘贴数据。
  2. 点击表格右上角的「AI 处理」按钮,进入 AI 列生成面板。
  3. 在输入框里用一句话描述你的需求,例如:
    • 「从身份证号列提取出生日期,格式为 YYYY-MM-DD」
    • 「从备注列提取手机号,只保留数字」
    超级表会调用本地 AI 模型(AI.Generate),为每一行自动生成结果填入新列。
  4. 预览结果没问题后点「确认」,数据立刻落盘为普通值,不带公式,交付直接用。

同样的思路也适合其他信息抽取场景,比如从地址里取省市、从备注里取姓名。更系统的清洗做法可以看用 AI 一句话清洗表格数据。如果你需要在抽取之后进一步整理列的格式,可以参考列拆分的做法。

Excel 公式 vs 超级表 AI 对照

对比项Excel 公式(MID / TEXT / REGEXEXTRACT)超级表 AI 抽取
提取生日三层嵌套 DATEVALUE(TEXT(MID(...)))一句话描述,自动生成新列
判断性别IF(MOD(MID(A2,17,1),2),"男","女")同一个 AI 描述可一并处理
提取手机号公式复杂,不规则文本易出错;REGEXEXTRACT 兼容性差理解上下文,不规则格式也能抽
数据安全本地计算,安全离线运行,数据不上传,同样安全
批量处理要拖公式、处理辅助列全列一键生成
结果形式公式(源列一动就变)直接写成值,无公式依赖
学习成本需要记函数参数自然语言描述即可

常见问题

MID 取出来的生日为什么日期运算不对?

MID 返回的是文本字符串,不是 Excel 日期值,直接做减法会报错或得到错误数字。需要用 DATEVALUE(TEXT(MID(A2,7,8),"0000-00-00")) 转成日期序列值,再把单元格格式设为「日期」,才能正常参与年龄计算(用 DATEDIFYEARFRAC)。

超级表的 AI 处理会把身份证号传到云端吗?

不会。超级表是桌面端本地应用,离线运行,零登录,所有数据计算都在你的电脑上完成,不连接任何外部 AI 服务器。身份证号、手机号等敏感信息不会离开本地磁盘,适合处理员工档案、客户信息等需要保密的表格。

超级表免费能用吗?

能。免费版(¥0/月)可以使用数据导入、列拆分、AI 处理等核心功能。如果需要更大数据量导出或更多 AI 用量,可以按需升级到年付 ¥199 或买断版 ¥599。

不想跟嵌套公式较劲?

免费下载超级表,一句话让 AI 从身份证、备注里抽出你要的字段,数据全程本地不上传

免费下载(macOS / Windows)