计算年龄公式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一个同事请教我有关Excel自动计算年龄的方法,本人不太了解,晚上到网上一搜,大失所望,几乎没有一种方法是精确的。寻寻觅觅了好久,终于发现了Shally的博客里的一篇文章,试了一下,这个公式计算非常精确,在此和大家分享一下。
以下为博客全文:
网上搜到的共式大概有这么几种:
1、计算出生日期到某一指定日期(一般选用某年的最后一天入2006年12月31日)的的天数,然后除以360 ,得到一个数值,然后用 int()函数取整,得出需要的年龄。一般使用的公式如下:
=IF(C12="","",INT(DAYS360(C12,"2006-12-31")/360))
聪明一点的人知道使用这个公式,
=IF(C12="","",INT(DAYS360(C12,TODAY())/360))
这个方法,这个公式的弊端在于,一、将每个月默认为30天去计算两个日期之间的天数,二、将每年默认为360天去计算年龄。这种方法显然不精确。
2、年份直接相减
计算周岁
=YEAR(NOW())-YEAR(C12)
计算虚岁
=YEAR(NOW())-YEAR(C12)+1
这种算法的精确程度显而易见,粗略估算还算可以。
3、使用DATEDIF函数
这种方法与第一种方法采用了相同的思路,但是其的精确程度显然比第一种方法要高,这取决于DATEDIF函数本身的精确性。
=IF(C12="","",INT(DATEDIF(C12,"1983-3-20","D")/365))
或者,
=IF(C12="","",INT(DATEDIF(C12,now(),"D")/365))
但是这种方法强行将一年固定为365天,我们知道通常情况每个四年就有一年是366天所以这种算法也不是很精确。
通过认真分析,我觉得只有结合我们计算年龄的实际方法,才能编制出准确无误的公式。首先分析人们计算年龄的方法,例如,笔者系1983年3月20日生人,如果要在2007年3月23日这天计算他的年龄,通常采用这样的方法。首先,人们会用2007减去1983得出的年龄为24岁,然后再看看他“满没满”24岁,就是看看出生的月份和日期比今天早还是晚,如果出生日期晚于今天则表示没有满,那么他的年龄就应该是2007-1983-1=23岁。如果出生日期早于今天或者就是今天,就说明
他已经满了24岁或者正好满24岁,则他的年龄就是2007-1983=24岁。分析清楚了计算年龄的过程我们再根据这个过程编写公式就很容易了。
综上,我编写了如下公式,在实际应用中将公式中所有的C12替换为,你的所使用的出生日期所在的表格行号列号组合即可。如(A1,B2等等)
=IF(MONTH(NOW())
=IF ( MONTH(NOW()) INT(YEAR(NOW())-YEAR(C12))-1 , //如果当前日期的月份小于所需计算日期的月份,则表示今年没有过生日,年龄数为YEAR(NOW())-YEAR(C12)-1,如果不是这种情况,进入下面的判断 IF ( MONTH (NOW())>MONTH(C12) , YEAR(NOW())-YEAR(C12) , //如果当前日期的月份大于所需计算日期的月份,则表示今年已经过生日,年龄数为YEAR(NOW())-YEAR(C12),如果也不是这种情况,则表示这两个月份相等,进入下面的判断过程去判断,日期的情况。 IF ( DAY(NOW())>=DAY(C12) , YEAR(NOW())-YEAR(C12) , //如果今天的日期大于或者等于出生年月日中的日期,则表示已经过了生日,或者正在过生日,则年龄数为YEAR(NOW())-YEAR(C12),否则表示今年没有过生日,年龄数应该选择下面的公式,大小为 YEAR(NOW())-YEAR(C12)-1)))