EXCLE中最精确的计算年龄的公式--指定日期

温柔似野鬼°
545次浏览
2021年02月20日 06:40
最佳经验
本文由作者推荐

-

2021年2月20日发(作者:闭门造车)


EXCLE


中最精确的计算年龄的公式




中午一个同事请教我有关


EXCLE


自动计算年龄的方法,


当时告诉她应该有一堆公式但是一


时没有谁能记得清楚,答应他回来以后上网查查。



到网上一搜,大失所望。几乎没有一种方法是精确的。



网上搜到的共式大概有这么几种:



1


、计算出生日期到某一指定日期(一般选用某年的最后一天入


2 006



12



31


日)的


的天数,然后除以


360


,得到一个数值,然后用



int()


函数取整,得出需要的年龄。一般


使用的公式如下:

< p>


=IF(C12=


聪明一点的人知道使用这个公 式,



=IF(C12=


TODAY( )


)/


360))


这个方法,这个公 式的弊端在于,一、将每个月默认为


30


天去计算两个日期之间 的天数,


二、将每年默认为


360


天去 计算年龄。这种方法显然不精确。



2


、年份直接相减



计算周岁



=YEAR(NOW())-YEAR(C12)


计算虚岁



=YEAR(NOW())-YEAR(C12)+1


这种算法的精确程度显而易见,粗略估算还算可以。



3


、使用


DATEDIF


函数



这种方法与第一种方法采用了相同的思路,

< p>
但是其的精确程度显然比第一种方法要高,


这取


决 于


DATEDIF


函数本身的精确性。



=IF(C12=


或者,


< p>
=IF(C12=


now()


,

< br>但是这种方法强行将一年固定为


365


天,


我们知道通常情况每个四年就有一年是


366


天所< /p>


以这种算法也不是很精确。



通过认真分 析,我觉得只有结合我们计算年龄的实际方法,才能编制出准确无误的公式。



首先分析人们计算年龄的方法。



例如 笔者系


1983



3

< br>月


20


日生人,


如果要在


2007



3



23


日这天计算他的年龄,



常采用这样的方法。



首先,人们会用


2007


减去


1983


得出 的年龄为


24


岁,然后再看看他



满没满


”24


岁,就


是看看出生的月份和日期比今天早还是晚,


如果出生日期晚于今天则表示没有满,


那么他的


年龄就应该是


2007-1983 -1=23


岁。如果出生日期早于今天或者就是今天,就说明他已


经满了


24


岁或者正好满


24


岁,则他的年龄就是


2007-1983=24


岁。



分析清楚了计算年龄的过程我们再根据这个过程编写公 式就很容易了。



综上,我编写了如下公式,在实际应用中将公 式中所有的


C12


替换为,你的所使用的出生

< br>日期所在的表格行号列号组合即可。如(


A1



B2


等等)



=IF( MONTH(NOW())


TH(NOW())>MONTH(C12),YEAR(NOW( ))-YEAR(C12),IF(DAY(NOW())>=DAY(C


12),YE AR(NOW())-YEAR(C12),YEAR(NOW())-YEAR(C12)-1)))



公式说明



=IF ( MONTH(NOW())


//


如果当前日期的月份小于所需计算日期的月份,则表示今年没有过生日,年龄数为

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) ,



//< /p>


如果今天的日期大于或者等于出生年月日中的日期,


则表示已经过 了生日,


或者正在过生


日,则年龄数为


YEAR(NOW())-YEAR(C12)


,否则表示今年没有过生日,年龄数应该 选


择下面的公式,大小为


YEAR(NOW())-YEAR( C12)-1


YEAR(NOW())-YEAR(C12)-1 )



)




参考知识:





IF


请参阅




执行真假值判断,根据逻辑计算的真假值,返回不同结果。




可以使用函数



IF


对数值和公式进行条件检测。




语法



< /p>


IF


(


logical_test


,


value_if_true


,value _if_false)



Logical_test


表示计算结果为



TRUE




FALSE

的任意值或表达式。


例如,


A10=100


就是一个逻辑表达式,如果单元格



A10


中的值等于



100


,表达式即为



TRUE


,否则为


< br>FALSE


。本参数可使用任何


比较运算符





Value_if_true


logical_test




TRUE


时返回的值。例如,如果本参数为文本字符串



预算内



而且



logical_test


参数值为



TRUE


,则



IF


函数将显示文本



预算内



。如果



logical_test




TRUE




value_if_true


为空,则本参数返回



0


(零)。如果要显示



TRUE


,则请为本参数使用逻辑值



TRUE



Value_if_tru e


也可以是其他公式。




Value_if_false


logical_test




FALSE


时返回的值。


例如,


如果本参数为文本字符串



超出预算



而且



logical_test


参数值为



FALSE


,则



IF


函数将显示文本



超出预算



。如




logical_test




FALSE


且忽略了



Value_if_false


(即



value_if_true


后没有逗号)

< br>,


则会返回逻辑值



FALSE


。如果



logical_test




FALSE




Value_if_false


为空(即



value_if_true


后有逗号,

并紧跟着右括号)



则本参数返回



0


(零)



V alue_if_false



可以是其他公式。




说明







函数



IF


可以嵌套七层,




value_if_false




value_if_true


参数可以构造复杂


的检测条件。请参阅下面最后一个示例。



-


-


-


-


-


-


-


-