Excel 怎么从身份证提取生日、从文本提取手机号
工作中常碰到两类需求:一是从 18 位身份证号里取出出生日期和性别,二是从一段备注文字里把手机号抓出来。本文先给出每种情况的 Excel 公式写法,再教你用超级表的 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 公式有几个共同短板:
- 公式长、易出错:哪怕是「提取生日」这个相对简单的需求,也要嵌套三层
DATEVALUE(TEXT(MID(...))),稍有失误就报错,不熟悉函数的同事看一眼就晕。 - 不规则文本搞不定:身份证前有空格、手机号中间带横线、备注字段里夹着其他数字——这些情况让公式逻辑急剧复杂,往往需要多个辅助列才能处理干净。
- 批量处理费时:几千行数据每列都要拖公式,某列出了问题还要逐行排查,效率很低。
- 结果是公式不是值:交付给别人的表,公式里引用的原始列一动,结果就全变,还得手动「粘贴为值」。
对于身份证、手机号这类敏感信息,很多团队还有额外顾虑:如果用在线公式插件或直接把表格传给 AI 服务,数据会不会被上传到第三方服务器?
更简单:超级表 AI 一句话抽取
超级表(TableDI)是一款在 macOS / Windows 上本地运行的桌面端高能表格助手,内置 AI 处理功能,可以用自然语言描述你想做的事,让 AI 帮你生成新列。关键一点:超级表离线运行,数据不上传任何服务器,身份证号、手机号全程只存在本地磁盘,适合处理敏感信息。
用超级表提取生日和手机号的步骤如下:
- 把含有身份证号或备注文本的表格(Excel / CSV)拖进超级表,或直接粘贴数据。
- 点击表格右上角的「AI 处理」按钮,进入 AI 列生成面板。
- 在输入框里用一句话描述你的需求,例如:
- 「从身份证号列提取出生日期,格式为 YYYY-MM-DD」
- 「从备注列提取手机号,只保留数字」
AI.Generate),为每一行自动生成结果填入新列。 - 预览结果没问题后点「确认」,数据立刻落盘为普通值,不带公式,交付直接用。
同样的思路也适合其他信息抽取场景,比如从地址里取省市、从备注里取姓名。更系统的清洗做法可以看用 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")) 转成日期序列值,再把单元格格式设为「日期」,才能正常参与年龄计算(用 DATEDIF 或 YEARFRAC)。
超级表的 AI 处理会把身份证号传到云端吗?
不会。超级表是桌面端本地应用,离线运行,零登录,所有数据计算都在你的电脑上完成,不连接任何外部 AI 服务器。身份证号、手机号等敏感信息不会离开本地磁盘,适合处理员工档案、客户信息等需要保密的表格。
超级表免费能用吗?
能。免费版(¥0/月)可以使用数据导入、列拆分、AI 处理等核心功能。如果需要更大数据量导出或更多 AI 用量,可以按需升级到年付 ¥199 或买断版 ¥599。