
WPS表格如何用公式提取身份证号中的出生日期?
功能定位:为什么非得用公式而不是手动
在人事、财务、教务等高频场景,动辄上千行身份证信息需要批量转成出生日期。手动敲不仅慢,还极易把“1990”打成“1980”。WPS表格的公式提取能在源头一次性生成可参与后续计算的“真日期”,而非看起来像日期的文本,这是它与“查找替换+分列”最大的区别。
核心关键词“WPS表格提取身份证出生日期”对应的官方函数只有MID、TEXT、DATE三种原生组合,无需启用宏或第三方插件,个人版即可复现。
先判断:18位还是15位,决定公式长度
大陆现行证件分两代:18位(1999年后)与15位(1999年前)。前者出生日期藏在第7-14位,后者藏在第7-12位且不含“19”。如果数据混杂,必须让公式自己“看长度”再决定切哪一段,否则一刀切会把15位错判成“20世纪”。
提示
在WPS表格2026春季版中,LEN函数计算速度在10万行级别仍保持亚秒级回显,可放心用来做长度判断,不会拖慢文件。
公式全家桶:从“切出来”到“变成日期”
1. 仅18位:最短路径
假设A2存放18位身份证号,目标列B2输入:
=DATE(MID(A2,7,4),MID(A2,11,2),MID(A2,13,2))
回车即可得到“真日期”,单元格格式如显示为序列号,请手动把格式改为“年月日”或“yyyy-mm-dd”。
2. 仅15位:补“19”再转
=DATE(19&MID(A2,7,2),MID(A2,9,2),MID(A2,11,2))
15位证件不含世纪,因此统一补“19”前缀,经验性观察显示1900-1999年出生人群覆盖最主流业务场景。
3. 混合位数的自适应公式(推荐)
=IF(LEN(A2)=18,
DATE(MID(A2,7,4),MID(A2,11,2),MID(A2,13,2)),
IF(LEN(A2)=15,
DATE(19&MID(A2,7,2),MID(A2,9,2),MID(A2,11,2)),
""))
外层IF先做长度判断,等于18走第一分支,等于15走第二分支,其余返回空文本,避免乱码。
平台差异:桌面端与移动端输入路径
| 平台 | 最短入口 | 备注 |
|---|---|---|
| Windows/macOS | 选中单元格→直接输入公式栏→回车 | 支持Ctrl+Shift+↓快速填充 |
| Android/iOS | 双击单元格→点击“fx”→插入函数→手动敲IF/MID | 虚拟键盘无Ctrl键,建议复制公式后整列粘贴 |
常见失败分支与回退方案
- 失败1:结果为“#VALUE!”——原因为身份证号含空格或全角字符。回退:用
=CLEAN(TRIM(A2))清洗后再套公式。 - 失败2:15位算出“2092-xx-xx”——原因为公式漏写“19&”。回退:检查MID起始位置,确保补世纪前缀。
- 失败3:向下填充后日期全一样——原因为引用未锁定行号。回退:把A2改为A2(相对引用即可),或重新双击填充柄。
是否值得?三条判断标准
1. 数据量≥200行:手动成本已高于写公式时间;2. 后续需做年龄、工龄、退休日计算:真日期才能参与DATEDIF;3. 文件需交给上级二次编辑:公式列可一键刷新,减少返工。
何时不该用
若数据需导入某些早期财务系统,对方只认文本格式“19900101”,则直接=TEXT(上述公式,"yyyymmdd")转成文本即可,避免日期系统差异导致错号。
验证与观测方法
- 随机抽取10条,人工对照身份证背面生日,确认100%一致。
- 用
=DATEDIF(出生日期,TODAY(),"y")计算年龄,抽查是否出现负值或大于120的异常。 - 打开“文件→选项→重新计算”,设为“自动重算”,增删行后观察公式是否自动扩展。
FAQ:必须用DATE吗?TEXT行不行?
TEXT写法更短,为何官方仍推荐DATE?
TEXT只能返回文本,无法参与后续日期运算;DATE生成的是序列号,可直接相减得天数。
打开文件时日期变成五位数怎么办?
选中列→右键“设置单元格格式”→日期→选择“yyyy-mm-dd”即可恢复可读格式。
协作时别人用手机改乱公式如何锁定?
审阅→保护工作表→取消“选定锁定单元格”勾选→设置密码,仅留身份证列可编辑。
最佳实践清单(可打印)
- 拿到数据先清洗:CLEAN、TRIM、删除重复。
- 新增“出生日期”专用列,保留原始身份证列不覆盖。
- 公式写完先用200行小表验证,再复制到全表。
- 文件上传云文档前,把公式区域复制→右键“值粘贴”,防止协作端低版本闪退。
- 每年1月1日检查是否出现“年龄为负”提示,及时补录新一代18位证件。
收尾:下一步行动
复制文内自适应公式,直接粘进你的WPS表格,用10分钟完成全表校验,你就能把“出生日期提取”这项重复劳动从日程里永久划掉。若后续还需按年龄分段统计,只需再学一个DATEDIF,即可实现自动分层,继续把精力留给真正需要判断力的工作。