Excel精确的计算年龄的公式
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)
=(TODAY()-出生日期单元格)/365(常用)
计算虚岁=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岁。分析清楚了计算年龄的过程我们再根据这个过程编写公式就很容易了。
3、综上,在实际应用中将公式中所有的C12替换为,你的所使用的出生日期所在的表格行号列号组合即可。如(A1,B2等等)
=IF(MONTH(NOW())MONTH(C12),YEAR(NOW())-YEAR(C12),IF(DAY(NOW())>=DAY(C12),YEAR(NOW())-YEAR(C12),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)))
附:
关于在excel中DATEDIF函数如何应用
1、简要说明:返回两个日期之间的年月日间隔数
2、基本语法:=DATEDIF(开始日期,结束日期,单位代码)
实例1:
题目:计算出生日期为1973-4-1人的年龄
公式:=DATEDIF("1973-4-1",TODAY(),"Y")
结果:33
简要说明当单位代码为"Y"时,计算结果是两个日期间隔的年数.
实例2:
题目:计算日期为1973-4-1和当前日期的间隔月份数.
公式:=DATEDIF("1973-4-1",TODAY(),"M")
结果:403
简要说明当单位代码为"M"时,计算结果是两个日期间隔的月份数.
实例3:
题目:计算日期为1973-4-1和当前日期的间隔天数.
公式:=DATEDIF("1973-4-1",TODAY(),"D")
结果:12273
简要说明当单位代码为"D"时,计算结果是两个日期间隔的天数.
实例4:
题目:计算日期为1973-4-1和当前日期的不计年数的间隔天数.
公式:=DATEDIF("1973-4-1",TODAY(),"YD")
结果:220
简要说明当单位代码为"YD"时,计算结果是两个日期间隔的天数.忽略年数差
实例5:
题目:计算日期为1973-4-1和当前日期的不计月份和年份的间隔天数.
公式:=DATEDIF("1973-4-1",TODAY(),"MD")
结果:6
简要说明当单位代码为"MD"时,计算结果是两个日期间隔的天数.忽略年数和月份之差
实例6:
题目:计算日期为1973-4-1和当前日期的不计年份的间隔月份数.
公式:=DATEDIF("1973-4-1",TODAY(),"YM")
结果:7
简要说明当单位代码为"YM"时,计算结果是两个日期间
Datedif函数
是一个十分方便的函数,可以计算两日期之间的天数、月数和年数
Datedif(start_date,end_date,unit)只是Excel为了沿袭Lotus123的一个函数,属于隐藏函数
语法
DATEDIF(start_date,end_date,unit)
Start_date为一个日期,它代表时间段内的第一个日期或起始日期
End_date为一个日期,它代表时间段内的最后一个日期或结束日期。
Unit为所需信息的返回类型。
Unit返回类型为:
"Y"时间段中的整年数。
"M"时间段中的整月数。
"D"时间段中的天数。
"MD"start_date与end_date日期中天数的差。忽略日期中的月和年。
"YM"start_date与end_date日期中月数的差。忽略日期中的日和年。
"YD"start_date与end_date日期中天数的差。忽略日期中的年
注意:start_date参数必须要比end_date参数早,否则函数返回错误!
|
|