Excel公式怎么从身份证号提取出生日期
用 MID 截取身份证号第 7 到 14 位的出生日期数字,再用 DATE 转成真正的日期。讲清 18 位与 15 位号码的写法、结果出错的原因和逐项核对方法。
人事表、物业登记表或报名表里经常有一列身份证号,统计年龄、按出生年份分组或筛选生日时,如果逐个手动抄写,既慢又容易出错。其实号码本身已经包含出生日期,用 Excel 的文本函数截出来,再转换一次就能得到结果。
这篇文章写给需要批量处理身份证号的办公人员和表格使用者。读完后,你会拿到两条可以直接套用的公式,分别适用于 18 位和 15 位号码,还能知道结果报错或日期不对时该怎么排查。
提取身份证出生年月日,用哪种公式?一句话结论
先给结论:18 位号码用 MID 截取第 7 位起的 8 位数字,再用 DATE 拆分成年、月、日组合成日期;15 位号码的年份只有两位,要按 1900 年代补齐。
| 你的情况 | 推荐做法 | 原因 |
|---|---|---|
| 整列都是 18 位身份证号 | 用 MID 截取第 7 至 14 位,再用 DATE 转换 | 出生日期位置固定,公式简单 |
| 表里混有 15 位老号码 | 先用 LEN 判断长度,分别套用两套公式 | 15 位号码的年份只有两位,需要单独处理 |
| 只需要年份,用于分段统计 | 只截取第 7 至 10 位,用 VALUE 转成数字 | 不必得到完整日期,计算更直接 |
| 号码列看起来正常,结果却报错 | 检查是否有空格,并确认号码列为文本格式 | 空格和数字格式都会导致截取位置错位或精度丢失 |
| 需要按年龄排序或筛选 | 转成真日期后再用 DATEDIF 计算周岁 | 只有真日期才能参与日期运算 |
开始之前:先确认这几点
- 号码的位数。 18 位号码的出生日期在第 7 至 14 位,15 位号码在第 7 至 12 位,两者位置不同。可以在旁边一列用 LEN 函数统计长度,例如 =LEN(A2),结果为 18 或 15,就能知道该用哪套公式。
- 单元格格式。 如果号码列被 Excel 当作数字处理,18 位号码超过 15 位有效数字的部分会变成 0。出生日期仍在前 15 位以内,但这些数字一旦被改写,就很难恢复。建议先选中整列,设为文本格式,再输入或粘贴号码。已经变成数字的数据,改格式无法找回,需要从原始来源重新导入。
- 数据是否干净。 从网页、聊天记录或 PDF 复制的号码,常带有首尾空格或不可见字符,会让截取的位置错位。可以先用 TRIM 函数清理,例如 =TRIM(A2),确认无误后再提取。
- 数据安全。 身份证号属于个人信息。处理时尽量在本机表格中操作,不要随意上传到在线转换网站,结果表也避免随意外发。如果原件是扫描件,可以在本机完成文字识别,减少数据外传。
- 结果的用途。 如果只是给人看,设置成日期显示即可;如果要做年龄计算、筛选或排序,就必须得到真正的日期值,而不是文本。
在 Excel 中提取 18 位身份证出生日期的步骤
- 确认身份证号在 A 列,从第 2 行开始,并在 B 列输入表头“出生日期”。
- 在 B2 单元格输入公式 =DATE(MID(A2,7,4),MID(A2,11,2),MID(A2,13,2))。其中 MID(A2,7,4) 截取年份,MID(A2,11,2) 截取月份,MID(A2,13,2) 截取日,DATE 再把它们组合成日期。
- 按回车确认。B2 可能显示为一串数字,这是 Excel 内部的日期序列号,并不是错误,进行下一步即可。
- 选中 B2,把单元格格式设为日期,选择年-月-日的样式,数字就会显示为可读的日期。
- 双击 B2 右下角的填充柄,公式会自动向下复制到整列,每一行对应一个人的出生日期。
- 如果表里混有 15 位号码,可以改用合并判断的公式:=IF(LEN(A2)=18,DATE(MID(A2,7,4),MID(A2,11,2),MID(A2,13,2)),IF(LEN(A2)=15,DATE(1900+MID(A2,7,2),MID(A2,9,2),MID(A2,11,2)),"号码长度异常"))。这样长度异常的行会直接标出来,方便单独核实。
- 需要统计年龄时,在 C2 输入 =DATEDIF(B2,TODAY(),"Y"),得到周岁。TODAY 会随打开日期变化,表格每次打开的结果可能不同,需要固定时可以把某个基准日期写进公式替换 TODAY。
做完后逐项核对
| 检查项 | 怎么看 | 有问题怎么办 |
|---|---|---|
| 日期是否正确 | 随机抽 5 至 10 行,对照原号码第 7 至 14 位人工确认 | 若整体偏移,检查 MID 的起始位置和字符数 |
| 单元格是否仍是数字串 | 看显示是否为年月日 | 将该列设置为日期格式 |
| 是否出现 #VALUE! | 查看报错行的原始号码 | 清理空格和非数字字符后重新计算 |
| 是否有非法日期 | 用 =TEXT(B2,"yyyymmdd")=MID(A2,7,8) 反向校验,返回 FALSE 的行需检查 | DATE 会把 1990 年 13 月自动顺延到次年 1 月,这类错误号码要人工复核 |
| 号码长度是否异常 | 用 LEN 统计,看是否只有 18 和 15 | 长度异常的行单独核对原始数据,不要直接使用结果 |
❓ 常见问题(FAQ)
1. 公式结果显示一串数字,不是日期,怎么办?
这是 Excel 的日期序列号。选中结果单元格,把格式设为日期即可正常显示,计算结果本身不受影响。
2. 身份证号在 PDF 里,怎么快速放进 Excel?
如果 PDF 的文字可以被选中,直接复制粘贴即可,注意清理多余空格。扫描件需要先做 OCR 文字识别,OmniDoc 桌面客户端的 PDF 编辑器支持对扫描 PDF 做 OCR,并可以导出为 Excel。识别结果容易出现个别数字错误,身份证号必须逐条核对后再使用。
3. 用分列功能拆分,和用公式有什么区别?
分列可以按固定宽度把第 7 至 14 位单独拆出来,适合一次性处理。但它得到的仍是文本,还要再转换日期;号码表更新后也要重新操作。公式可以随数据自动计算,更适合经常变动的表格。
4. 算出来的年龄和实际差一岁,是什么原因?
常见原因有三类:出生日期本身转换错误,DATEDIF 默认按周岁计算而业务要求按虚岁,或者计算时使用的是 TODAY 而不是统一的基准日期。先核对出生日期,再确认计算口径,最后统一基准日期。
📝 总结
提取身份证的出生年月日,关键是先分清 18 位和 15 位号码,再用 MID 截取、用 DATE 转换成真日期。动手前把号码列设为文本,结果出来后抽样核对、做反向校验,表格就能放心用于统计和筛选。


