
WPS表格如何用公式提取身份证出生日期并计算年龄?
功能定位:为什么要在表格里拆身份证
“WPS表格提取身份证出生日期”对应的痛点很直接:前台收来的员工/学员/会员信息只有一列18位身份证号,却要快速拆出出生年月并计算年龄,用于合同、保险、考场校验。手动复制不仅低效,还容易把第7位以后的数字看错。用公式一次性完成,后续再收新行只需向下填充,属于数据清洗里最基础却最高频的场景。
WPS Spreadsheets 对文本函数与日期函数的语法完全兼容Excel 2021,但自带中文函数提示,对新手更友好;同时支持动态数组,无需旧版Ctrl+Shift+Enter。下面所有写法在Windows/macOS/Linux三端桌面版验证通过,移动端(Android/iPadOS)因键盘差异建议只查看结果、不做大规模编辑。
前置检查:身份证号码的合规边界
公式只能解决“格式对”的号码。若数据源里混有15位旧证、首位空格或全角字符,需要先执行“数据→分列→固定宽度”或TRIM()、VALUE()做清洗。否则后续会出现1900/01/00这类明显异常年龄。
警告:WPS不会自动校验身份证校验位,也就是说“18位但末位错误”的号码仍能算出出生日期。若业务对实名一致性要求极高,需引入官方核验接口或第三方校验插件,公式层仅做格式提取。
最简路径:Win/Mac桌面版四步完成
- 选中B列→右键“设置单元格格式”→日期→选2001-03-14样式;
- B2输入公式=DATE(MID(A2,7,4),MID(A2,11,2),MID(A2,13,2));
- C2输入公式=DATEDIF(B2,TODAY(),"y");
- 双击填充柄向下批量复制,完成。
以上路径在菜单栏均无需插件,也无需WPS账号登录。若找不到“设置单元格格式”,可在开始(Home)选项卡右侧“数字”分组点击小箭头,或快捷键Ctrl+1。
公式逐段拆解:为什么这样写
1. MID()定位
18位号码里,出生日期从第7位开始连续8位。MID(字符串,起始位,长度)返回文本,需再用DATE()把文本数字转成真日期。若用15位旧证,起始位是7但长度只取6,需要手工加前缀“19”。
2. DATE()组装
DATE(年,月,日)会自动修正闰月与大小月,例如DATE(2000,2,31)会被换算成2000-03-02,避免人工校验。
3. DATEDIF()算整岁
DATEDIF是隐藏函数,WPS同样支持;第三参数“y”返回完整年数。若用(YEAR(TODAY())-YEAR(B2)),会在生日之前多算一岁,不符合人事场景。
移动端差异与折中方案
在手机WPS App(版本号随商店滚动,示例截稿为Android 13.9.x)打开同一文件,公式会自动重算,但键盘缺少Ctrl+1快捷,设置日期格式需:底栏“工具→单元格→格式→日期”。若只需查看年龄,可直接把文件丢到微信聊天,用WPS小程序打开,公式结果只读显示,不会跑版。
动态数组一次性溢出(进阶)
如果你的WPS已更新到支持动态数组(截至当前的最新版本默认开启),可以用单格公式一次性“溢出”整列结果,避免向下拖拽:
=MAP(A2:A1000,LAMBDA(x,DATE(MID(x,7,4),MID(x,11,2),MID(x,13,2))))
MAP+LAMBDA在WPS的函数库中已可用,写法与Excel 365一致。好处是新增行无需再填充;代价是文件体积会略增,经验性观察:十万行以内打开速度差异可忽略,超过二十万行建议关闭自动重算或改用Power Query。
常见失败分支与回退
- 结果显示为五位数:单元格仍是“常规”格式,按Ctrl+1改日期即可,数据未丢。
- #VALUE!:A列混入空格或字母,用=IFERROR(原公式,"待核查")包裹,后续手动补录。
- 年龄全为0:DATEDIF参数写错成“Y”大写,WPS只认小写“y”。
提示:若公司电脑禁用宏,也不必担心——以上全部使用工作表函数,不涉及VBA或Python脚本,合规审查通常一路绿灯。
合规与隐私:公式层不留痕迹
公式只依赖单元格值,不会把身份证上传到云端;WPS的实时协作也仅同步可见内容。但若打开“WPS AI 数据洞察”并主动点击“上传分析”,则会把选中区域加密传到国内机房做汇总,此时身份证明文会出境(虽声明AES-256)。对涉敏场景,建议关闭AI侧边栏或在本地另存离线副本再操作。
性能与规模:十万行以上怎么提速
MID+DATE属于轻量函数,但整列数组在>10万行时,自动重算可能让滚动卡顿。三步缓解:
- 公式→计算选项→手动,批量编辑完毕再按F9一次重算;
- 把公式结果复制→右键“粘贴为值”,彻底脱离函数;
- 若需周期性追加,改用“数据→查询→从表格”把身份证列导入Power Query,在M语言里添加自定义列,步骤可一键刷新,前端文件体积保持最小。
可复现验证:如何确认结果无误
取3条样本,用国家政务平台“身份证查询”小程序反向校验生日;同时在WPS用=TEXT(B2,"yyyymmdd")与MID()截出的8位比对,必须一致。若出现1日误差,99%因为原号码第13~14位填错,与公式无关。
什么时候不建议用公式
- 数据源每日增量百万级,更适合ETL或数据库,在入库时就拆好字段;
- 需要同时校验地址码与校验位,公式层会变得冗长,可调用WPS官方模板商城的“身份证校验”模板(免费),或对接公安部接口;
- 文件需长期给外部审计,若对方使用Excel 2016以前版本,动态数组可能向下兼容失败,此时应改用传统拖拽公式并保存为.xlsb二进制格式。
FAQ:身份证提取常见疑问
15位旧证怎么兼容?
先用IF判断长度,若15位则把“19”拼到第7位前,再按18位逻辑截取即可。公式:=IF(LEN(A2)=15,DATE("19"&MID(A2,7,2),MID(A2,9,2),MID(A2,11,2)),DATE(MID(A2,7,4),MID(A2,11,2),MID(A2,13,2)))。
为何DATEDIF偶尔返回-1?
当电脑日期被手动调到出生日期之前,TODAY()小于出生日期时DATEDIF会负值。检查系统时钟即可。
文件存成.et还是.xlsx?
对内全WPS环境建议.et,体积更小且支持1.6万列;若需外发审计,另存为.xlsx确保Excel用户也能编辑。
能否只提取不计算?
可以,把DATE换成TEXT:=TEXT(DATE(...),"yyyy-mm-dd"),结果即为文本型日期,不占存储空间。
打开文件看见“#NAME?”怎么办?
函数名被意外翻译成英文,切换公式语言:文件→选项→高级→公式语言→中文。
最佳实践速查表
| 场景 | 建议做法 | 禁用/慎用 |
|---|---|---|
| <1万行内部台账 | MID+DATE+DATEDIF,自动重算保持开启 | 无需Power Query,避免过度工程 |
| 10万+行考勤库 | 手动重算→结果粘贴为值→再传下游 | 不要把含动态数组的文件给低版本用户 |
| 含15位旧证 | IF长度判断+前缀19 | 别用查找表,易遗漏 |
| 外发审计/投标 | 另存.xlsx,公式值化,附带校验样本 | 不要携带隐藏身份证原始列 |
收尾:下一步行动
读完本文,你可以立刻打开任意一个含身份证的WPS表格,按Win/Mac最短路径完成提取与年龄计算;若数据量过万,记得先把公式结果粘贴为值,再关闭自动重算。以后收到新文件,只需替换A列数据源,全表即可秒级更新。最后,用国家政务平台抽3条记录反向验证,确认无误即可交付——这就是工程视角下的“问题→约束→解法”完整闭环。
相关文章

WPS表格如何批量将工作表名自动填入对应A1单元格?
WPS表格用宏脚本一键把工作表名批量写入A1,可审计、可回退,适合月度台账合规归档。

WPS表格如何批量把英文姓名转为姓在前格式?
WPS表格用公式+填充柄即可批量把英文姓名转姓在前格式,兼容中文系统,步骤可复现。

WPS表格如何用函数批量提取出生日期?
WPS表格用函数批量提取出生日期:MID+TEXT+DATE组合公式,兼容18位身份证,支持自动校验与错误回退。

WPS表格如何一键删除所有空行并保持序号连续?
WPS表格一键删空行并自动重排序号,桌面与移动端完整路径、边界条件与回退方案一次讲透。