EXCEL根据身份证号或者出生年月计算精准的年龄

单行、唯一 0     4570      Office   1     0
今天合作伙伴临时要求统计年龄未满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.由此公式就是先判断当前月份和天使是否到了生日,然后再做相应的计算





captcha
忘记密码? 注册
第三方登录
微信赞赏
支付宝赞赏