点击蓝字 关注我们
平时做人员信息统计,手里只有身份证号,怎么快速算出每个人的年龄?
手动算肯定不现实。其实,只要搞懂身份证号的编码规则,用Excel公式就能自动算出精确的年龄。今天直接把好用的公式分享给你,兼容老版15位和新版18位身份证。
为什么能从身份证号得到年龄?
根据国家标准GB 11643-1999《公民身份号码》的规定,身份证号并不是一串随机数字,出生日期直接写在里面:

18位身份证(现行):第7位到第14位是出生日期码,格式为
YYYYMMDD(年4位、月2位、日2位)。比如19950815,就是1995年8月15日。15位身份证(老版):第7位到第12位是出生日期码,因为默认都是19XX年出生,省略了前两位,格式为
YYMMDD。比如950815,就是1995年8月15日。
只要把这段数字提取出来变成日期格式,再用指定时间减去出生日期,就能算出年龄。
直接套用的Excel公式
假设身份证号在 A2 单元格(如果你的数据在B列,就把下面公式里的A2替换成B2)。
替换可通过打开记事本,将公式复制进去,点击记事本的编辑-替换,查找填入A2,替换填入对应的身份证号列的第一行,点击全部替换。公式完成可以直接把鼠标放到格子右下角往下拖复用公式。
因为统计年龄的截止时间需求不同,我准备了三个公式:
1. 按年计算(例如计算截至2026年的年龄)
如果不需要太精确,只算到哪一年,用这个:
=IF(A2="", "", 2026- YEAR(IF(LEN(A2)=18, DATE(MID(A2,7,4), MID(A2,11,2), MID(A2,13,2)), DATE("19"&MID(A2,7,2), MID(A2,9,2), MID(A2,11,2)))))例如2000年的,公式里是2026年,那么就是2026-2000=26岁:

2. 按年月计算(例如计算截至2026年6月的年龄)
如果需要精确到月份(没过生日的月份不进位),用这个:
=IF(A2="", "", (2026 - YEAR(IF(LEN(A2)=18, DATE(MID(A2,7,4), MID(A2,11,2), MID(A2,13,2)), DATE("19"&MID(A2,7,2), MID(A2,9,2), MID(A2,11,2))))) - (6 < MONTH(IF(LEN(A2)=18, DATE(MID(A2,7,4), MID(A2,11,2), MID(A2,13,2)), DATE("19"&MID(A2,7,2), MID(A2,9,2), MID(A2,11,2))))))例如2000年7月的,公式里是2026年6月,那么就是25岁,因为还没满26岁

3. 按年月日计算(例如计算截至2026年6月25日的精确周岁)
最严谨的算法,算到具体某一天的周岁,用这个:
=IF(A2="", "", DATEDIF(IF(LEN(A2)=18, DATE(MID(A2,7,4), MID(A2,11,2), MID(A2,13,2)), DATE("19"&MID(A2,7,2), MID(A2,9,2), MID(A2,11,2))), DATE(2026,6,25), "Y"))例如2000年6月26日的,公式里是2026年6月25日,还没到26号,所以是25岁。

而2000年6月25日,和公式里日期一样,所以是26岁。

公式逻辑拆解
公式看着长,其实拆开看就4个步骤:
1. 判断位数:LEN(A2)=18先算一下A2单元格的身份证号有多长。如果是18位走一套逻辑,不是18位(即15位)走另一套逻辑。
2. 提取并拼接日期:MID 和 DATE
MID负责按位置抠出年、月、日的数字。对于15位身份证,抠出年份后前面补个
"19"。DATE把抠出来的年、月、日拼成Excel认识的标准日期格式。
3. 防止报错:IF(A2="", "", ...)如果单元格是空的,就直接返回空白,避免表格里满屏的 #VALUE! 报错。
4. 计算年龄差:
按年:直接用指定年份减去出生年份。
按年月:用年份差减去一个判断条件
(6 < MONTH(出生日期))。如果出生月份大于6月,说明还没过生日,这个条件成立返回1,年龄就减1;否则返回0。按年月日:直接用Excel里专门算日期差的
DATEDIF函数,结束日期写成DATE(2026,6,25),最后加个"Y",算出来的就是满打满算的周岁。
最后提醒一下:在套用公式前,确保你的身份证号所在列是“文本”格式,不然长数字会变成科学计数法,公式就会算错。
求点赞

求分享

求喜欢

夜雨聆风