在 excel 里用身份证号算年龄很简单:从第 7 位开始截 8 位出生日期,套上 datedif 和 today 函数就能算出准确实岁。本次操作环境是 microsoft excel,版本为 microsoft 365,最省事的公式直接放这:=datedif(text(mid(a2,7,8),"0000-00-00"),today(),"y")。
第一步:整理身份证号列
先把所有身份证号统一放到同一列,示例里 A 列放身份证号码,B 列留着返回出生日期或者年龄结果。身份证号最好按文本格式保存,尤其是末尾带 X、号码前面可能补 0 的情况;要是单元格左上角飘着绿色小三角,说明 Excel 已经自动把它识别成文本处理了,没问题。

第二步:提取出生日期
点 B2 单元格输入 =TEXT(MID(A2,7,8),"0000-00-00")。MID(A2,7,8) 从身份证号第 7 位开始取 8 个字符,刚好就是出生年月日;外层的 TEXT 函数把 19970319 这类数字串转成 1997-03-19 的标准日期格式,后面计算年龄时更直观,不容易出错。

第三步:计算当前整岁年龄
不想单独保留出生日期列的话,可以直接在年龄列输入 =DATEDIF(TEXT(MID(A2,7,8),"0000-00-00"),TODAY(),"Y")。TODAY() 自动读取系统当天日期,DATEDIF 的第三个参数填 "Y",返回的是已经过完生日后的实际整岁年龄。

第四步:向下填充并核对结果
第一条年龄算对之后,拖动或者双击单元格右下角的填充柄,把公式复制到下面所有行。核对的时候至少找两条数据验证:一条生日已经过了,一条生日还没到,别图省事直接把 YEAR(TODAY())-出生年份 当通用写法,这种写法碰到今年生日还没到的人,会多算 1 岁,结果不准。

用到的函数语法
| 函数 | 语法 | 关键参数 | 本例写法 |
|---|---|---|---|
MID |
MID(text,start_num,num_chars) |
text 是原文本,start_num 是起始位置,num_chars 是提取长度 |
MID(A2,7,8) |
TEXT |
TEXT(value,format_text) |
value 是要格式化的值,format_text 是格式代码 |
TEXT(MID(A2,7,8),"0000-00-00") |
TODAY |
TODAY() |
无参数,返回当前日期 | TODAY() |
DATEDIF |
DATEDIF(start_date,end_date,unit) |
start_date 是出生日期,end_date 是截止日期,unit 写 "Y" 表示整年 |
DATEDIF(出生日期,TODAY(),"Y") |
DATEDIF 在部分 Excel 版本里不会出现在函数提示列表里,直接手动输入就能正常运行。这套公式只适配 18 位二代身份证:这类证件的出生日期固定在第 7 到第 14 位;如果是早年的 15 位身份证号,出生年份只有后两位,不能直接套这套写法。
常见错误怎么改
| 现象 | 常见原因 | 处理办法 |
|---|---|---|
结果显示 #VALUE!
|
身份证号长度不对,或提取出来的 8 位不是有效日期 | 先用 =LEN(A2) 检查是否为 18 位,再看第 7 到第 14 位是不是合规日期 |
结果显示 #NUM!
|
出生日期晚于今天,或日期被 Excel 识别失败 | 检查身份证号是否录错,必要时先把出生日期列单独提取出来核对 |
公式显示 #NAME?
|
函数名拼错,或把中文引号输进了公式里 | 函数名用英文,公式里的引号和逗号都用英文半角符号 |
| 年龄比实际大 1 岁 | 只用了 YEAR(TODAY())-出生年份 的简化写法 |
改用 DATEDIF(出生日期,TODAY(),"Y"),让 Excel 自动判断生日是否已过 |
扩展示例
| 需求 | 公式 | 说明 |
|---|---|---|
| 先提取出生日期 | =TEXT(MID(A2,7,8),"0000-00-00") |
适合需要单独查看出生年月日的表格 |
| 直接计算年龄 | =DATEDIF(TEXT(MID(A2,7,8),"0000-00-00"),TODAY(),"Y") |
一列公式直接返回整岁年龄 |
| 年龄后加“岁” | =DATEDIF(TEXT(MID(A2,7,8),"0000-00-00"),TODAY(),"Y")&"岁" |
适合报表展示,后续汇总前建议保留纯数字年龄列 |
| 按指定日期计算年龄 | =DATEDIF(TEXT(MID(A2,7,8),"0000-00-00"),DATE(2026,12,31),"Y") |
适合按年底、入职日或考试截止日统计年龄 |
处理批量名单时,先拿一两条身份证号手动核对生日和年龄没问题,再向下填充整列。提前把号码位数、日期格式、英文符号这类小问题排查掉,后面要筛选年龄段或者做数据透视表的时候,数据也稳不会出问题。


















