excel 365、excel 2024这类桌面版本里,先把存身份证号的列设为文本格式,再用 date+mid 组合函数,从身份证第7、11、13位开始分别截出年、月、日。最后出来的结果不是普通文本,是支持排序、筛选、后续计算的标准日期值。
先确认身份证号按文本保存
18位身份证号长度超过Excel默认15位的数字精度上限,直接以数值格式粘贴的话,号码会自动转成科学计数法,末尾几位还会被替换成0。正确操作是先选中整列,点顶部「开始」选项卡的数字格式下拉菜单选「文本」,再粘贴原始数据;要是已经出现号码被改的情况,光改单元格格式救不回来,必须重新导入原始数据。
在 B2 输入 DATE 和 MID 公式
假设身份证号都存在A列,第一个人的身份证号在A2单元格,直接在B2输入 =IF(LEN(A2)=18,DATE(MID(A2,7,4),MID(A2,11,2),MID(A2,13,2)),"")。三个 MID 函数分别截出4位年份、2位月份、2位日期,再交给 DATE 函数拼出标准日期,微软官方的DATE函数示例页面里,也演示过用这个组合方式转换日期的操作。

把结果显示成日期格式
输完公式如果B2显示的是32939、44299这类纯数字,不是日期格式,说明公式已经正常返回了日期序列值,只是单元格显示格式没配对。选中整列结果,按 Ctrl+1 调出「设置单元格格式」面板,直接选分类里的「日期」就行;要是想要统一成年-月-日的四位年份格式,就切到「自定义」分类,输入 yyyy-mm-dd。
本文档主要介绍如何通过python对office excel进行读写操作,使用了xlrd、xlwt和xlutils模块。另外还演示了如何通过Tcl tcom包对excel操作。感兴趣的朋友可以过来看看

向下填充并核对结果
选中B2单元格,双击单元格右下角的小方块(填充柄),公式就会自动批量复制到所有有对应身份证号的行。做完之后抽查开头、中间、末尾几行,核对身份证号第7到14位的数字,和提取出来的出生日期是不是对得上;示例里虚构的 19900307 对应输出 1990-03-07,就说明截取位置和格式都没问题。

如果你的旧表里还混有早年的15位老身份证号,得单独加长度判断,用 "19"&MID(A2,7,2) 的写法补上世纪前缀。注意这个公式只会按固定位置截取字符,没法验证身份证号本身的真伪;处理这类人员敏感信息的时候,一定要用脱敏后的副本,同时严格限制文件的访问权限。










