ARTICLE · 1166497
WPS表格如何批量提取身份证号中的出生日期
18 位身份证号里第 7 到 14 位就是出生日期,所以在 WPS 表格里用 MID 取出这 8 位,再用 TEXT 转成日期格式,就能批量提取出生日期。公式写好下拉一次,几千行也不用逐个看。
一、先把身份证号设成文本
选中身份证号所在列,右键选择「设置单元格格式」。 在「数字」选项卡里选「文本」,点确定。 如果已经显示成 1.10101E+17 这种科学计数法,改完格式后要重新录入,或者用「数据-分列」把该列按文本方式导入。
18 位数字超过 15 位后,WPS 表格和 Excel 都会自动转成科学计数法,末三位还会变成 0,所以这一步不能省。
二、用 MID 取出 8 位生日
假设 A2 是身份证号,在 B2 输入:
=MID(A2,7,8)
结果是一串 8 位数字,例如 19900520。它对应的位置含义是:前 6 位是地区码,第 7 到 14 位是出生年月日,第 15 到 17 位是顺序码,第 18 位是校验码。
三、用 TEXT 格式化成日期
想要 1990-05-20 这种标准日期,套一层 TEXT:
=TEXT(MID(A2,7,8),"0000-00-00")
想要中文写法:
=TEXT(MID(A2,7,8),"0000年00月00日")
如果希望结果是能参与计算的真日期(比如再算年龄),用 DATE 更稳:
=DATE(MID(A2,7,4),MID(A2,11,2),MID(A2,13,2))
取到真日期后,算年龄就是 =DATEDIF(C2,TODAY(),"Y"),其中 C2 是上一步的生日结果。
四、15 位老身份证和性别一起算
老身份证只有 15 位,生日在第 7 到 12 位,年份要补上 19。用 LEN 判断位数:
=IF(LEN(A2)=18,TEXT(MID(A2,7,8),"0000-00-00"),TEXT("19"&MID(A2,7,6),"0000-00-00"))
顺带提性别:18 位看第 17 位、15 位看第 15 位,奇数为男、偶数为女。以 18 位为例:
=IF(MOD(MID(A2,17,1),2)=1,"男","女")
五、WPS 表格里的几种快捷做法
公式法:写好 B2 后双击填充柄向下填充,整列结果瞬间生成。 智能填充:在 B2 手动输入一个正确结果,回车后选中 B2,按 Ctrl+E,WPS 会按规律补全整列。 分列法:选中该列,点「数据-分列」,选「固定宽度」,在第 6 位和第 14 位后各插一条分隔线,中间的生日会被单独拆出来。
六、常见问题
提取出来还是 19900520 这种纯数字?说明没有套 TEXT,或者单元格格式被设成了数字。公式里加上 TEXT 后,结果就是文本形式的日期,直接显示即可。
公式下拉后全是同一个日期?多半是引用被写成了绝对引用,检查公式里的 A2 有没有变成 $A$2。
Excel 也能这样提取吗?可以。MID、TEXT、DATE、LEN 在 Excel 中写法完全相同,思路通用。
小结:WPS 表格批量提取身份证出生日期,就是「先设文本格式 + MID 从第 7 位取 8 位 + TEXT 格式化成日期」三步,顺手还能算出性别和年龄。