用excel从18位身份证文本提取年龄,得先保住完整文本,再提取出生年月日,用datedif按指定日期算满周岁。别直接拿当前年份减出生年份,生日没到会多算一岁;已经被15位有效精度截断的数字,改文本格式也找不回。本例全用非有效证件的演示字符串,固定截止日期2026/10/29方便核对,真实资料要在获准的本地环境处理。
先设文本再导入,核对长度和原始内容
A列先设为文本格式,再粘贴18位内容。两个演示字符串仅用于展示出生日期位置,不是有效身份证;用LEN(A2)检查为18,再和原始来源核对。已经以数值丢失尾数时必须重新导入,长度正确也不证明号码合法。

取第七位起的年月日,组成真实日期
在 B2 输入 =DATE(VALUE(MID(A2,7,4)),VALUE(MID(A2,11,2)),VALUE(MID(A2,13,2))),向下填充并设置日期显示。得到 1990/3/15 和 1990/11/15;DATE 会归一化越界月日,所以公式能出结果不等于证件或生日已通过有效性校验。
清理、标准化、验证并汇总杂乱的 Excel 工作簿。当 Codex 需要处理 `.xlsx`、`.xls`、`.xlsm` 或 `.csv` 格式的数据时使用,包括:统一表头格式、删除空白行与空白列、修剪文本内容、去重记录、检测数据质量问题、拆分或合并工作表、生成清洗后的工作簿,以及为业务电子表格生成审计摘要。

按结算日算满周岁,不直接相减年份
在 C2 输入 =DATEDIF(B2,DATE(2026,10,29),"Y"),填到 C3。结果分别为 36 与 35,第二条到结算日还没过生日,不能统一算成同龄。开始日期晚于结算日会报错,先核对出生日期,不用 IFERROR 把异常全改为零。

需要每天更新才换 TODAY,保留固定结算版本
C3 仍按 2026/10/29 计算为 35。日常动态年龄可将结算日换成 TODAY(),但历史报表应保留固定日期与公式。十五位旧证件、空值、无效日期要单独处理,不把这个十八位提取公式当作所有证件通用验证器。

















