夜雨聆风学习资料网

ARTICLE · 1166497

WPS表格如何批量提取身份证号中的出生日期

WPS表格如何批量提取身份证号中的出生日期

18 位身份证号里第 7 到 14 位就是出生日期,所以在 WPS 表格里用 MID 取出这 8 位,再用 TEXT 转成日期格式,就能批量提取出生日期。公式写好下拉一次,几千行也不用逐个看。

一、先把身份证号设成文本

  1. 选中身份证号所在列,右键选择「设置单元格格式」。
  2. 在「数字」选项卡里选「文本」,点确定。
  3. 如果已经显示成 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 表格里的几种快捷做法

方法
优点
缺点
适用场景
MID + TEXT 公式
批量处理、数据改了会更新
要记公式写法
整列长期使用
智能填充 Ctrl+E
不用写公式,快
行数多时识别可能出错
临时处理几行
数据-分列
一次拆成多列
要自己算好分隔位置
固定宽度拆分
  1. 公式法:写好 B2 后双击填充柄向下填充,整列结果瞬间生成。
  2. 智能填充:在 B2 手动输入一个正确结果,回车后选中 B2,按 Ctrl+E,WPS 会按规律补全整列。
  3. 分列法:选中该列,点「数据-分列」,选「固定宽度」,在第 6 位和第 14 位后各插一条分隔线,中间的生日会被单独拆出来。

六、常见问题

提取出来还是 19900520 这种纯数字?说明没有套 TEXT,或者单元格格式被设成了数字。公式里加上 TEXT 后,结果就是文本形式的日期,直接显示即可。

公式下拉后全是同一个日期?多半是引用被写成了绝对引用,检查公式里的 A2 有没有变成 $A$2。

Excel 也能这样提取吗?可以。MID、TEXT、DATE、LEN 在 Excel 中写法完全相同,思路通用。

小结:WPS 表格批量提取身份证出生日期,就是「先设文本格式 + MID 从第 7 位取 8 位 + TEXT 格式化成日期」三步,顺手还能算出性别和年龄。

相关学习资料