EXCEL根据身份证号或者出生年月计算精准的年龄
今天合作伙伴临时要求统计年龄未满18周岁的名单,要说尽快,又发了几张身份证图片来,唉,又让录数据,烦死啊。当时又忙,就让弟弟帮我录入,但是他速度太慢,后来还是得自己搞。名单只有身份证号啊,又不会,现去百度找公式,抖音搜方法,但是都不精准。 功夫不负有心人,不负我这种追求完美的人,最后找到了。
一、直接上公式:
C2 是格式为:1990-09-26格式的生日,如果是身份证号码,请使用MID函数提取MID(身份证号码列,起始位置,长度);
网友分享的结果:
=IF(MONTH(NOW())<MONTH(C12),INT(YEAR(NOW())-YEAR(C12))-1,IF(MONTH(NOW())>MONTH(C12),YEAR(NOW())-YEAR(C12),IF(DAY(NOW())>=DAY(C12),YEAR(NOW())-YEAR(C12),YEAR(NOW())-YEAR(C12)-1)))
另外一种(自己调试的结果):
C12到D12时间:C12是生日
=IF((MONTH(D12)>MONTH(C12))+((MONTH(D12)=MONTH(C12))*(DAY(D12)>=DAY(C12))),YEAR(D12)-YEAR(C12),YEAR(D12)-YEAR(C12)-1)
C12到当前时间:
=IF((MONTH(TODAY())>MONTH(C12))+((MONTH(TODAY())=MONTH(C12))*(DAY(TODAY())>=DAY(C12))),YEAR(TODAY())-YEAR(C12),YEAR(TODAY())-YEAR(C12)-1)
身份证号码获取年龄:
=IF((MONTH(TODAY())>INT(MID(B2,11,2)))+((MONTH(TODAY())=INT(MID(B2,11,2)))*(DAY(TODAY())>=INT(MID(B2,13,2)))),YEAR(TODAY())-MID(B2,7,4),YEAR(TODAY())-MID(B2,7,4)-1)
二、百度和抖音搜索结果:
例如:
出生年月是:1990-09-26
当前日期是:2020-01-01
显然年龄是29,要到2020-09-26才满30
1.很多人都是直接年份相减,显然差距太大
=YEAR(NOW())-1990
2.再精准一点的:天数相减除以360天,按照30天每月算:
=(NOW()-1990-09-26)/360
3.有的会除以365
=(NOW()-1990-09-26)/365
都是不够精准的;
三、精准思路:
1.先用年份相减,得到结果N
2.再看月份和天数相差:
(1)当前的月份和天数大于生日的(比如现在是01月01日,生日是09月26日),就说明还未到生日,年龄应该减去1岁, N-1
( 2) 当前的月份和天数小于生日的(比如现在是10月26日,生日是09月26日),就说明生日已经过了,年龄就是N
3.由此公式就是先判断当前月份和天使是否到了生日,然后再做相应的计算
请先登录后再评论登录