如何用EXCEL计算实际年龄
 
A
B
1
1981-01-01
2
第一种思路:
  B1=YEAR(TODAY())-YEAR(A1)
  这是最容易想到的,不过它的误差也是显而易见。按正常的计算方法,过完生日才算一岁,直接用年份相减,对那些今年生日未到的会多出一岁。
trunc函数使用时间第二种思路:
  B1=TRUNC((Today()-A1)/365),或者B1=TRUNC(YEARFRAC(A1,TODAY(),3))。
  这种计算思路相对第一种思路精确度要高很多,不过细心一看,还是有误差,考虑到闰年的因素,每年的天数不是固定在365,对生日在TODAY()前后一两天内的会出错。
第三种思路:
  B1=IF(TODAY()>=A1,IF(MONTH(TODAY())>MONTH(A1),YEAR(TODAY())-YEAR(A1),IF(MONTH(TODAY())=MONTH(A1),IF(DAY(TODAY())>=DAY(A1),YEAR(TODAY())-YEAR(A1),YEAR(TODAY())-YEAR(A1)-1),YEAR(TODAY())-YEAR(A1)-1)),"还没出世呢!")。
  这个公式看起来有点复杂,其实原理也是很简单,就是以月份和天数为依据进行嵌套判断,准确定位年月日的临界点,有效地解决了以上两种思路中的误差。
第四种思路:
  B1=DATEDIF(A1,TODAY(),"Y")
  这个函数是Excel的一个隐藏函数,只是为了沿袭Lotus123的一个函数。语法为:DATEDIF
(start_date,end_date,unit),“start_date”为开始日期,“end_date”为结束日期,“unit”返回:
  "Y" 时间段中的整年数;
  "M" 时间段中的整月数;
  "D" 时间段中的天数;
  "MD" start_date 与 end_date 日期中天数的差,忽略日期中的月和年;
  "YM" start_date 与 end_date 日期中月数的差,忽略日期中的日和年;
  "YD" start_date 与 end_date 日期中天数的差,忽略日期中的年。
  这个公式实现的效果和第三种思路的一样,公式也变成很简练,只不过在帮助里查不到它,我也是最近才发现有这么个好东东。
  综上所述,最后一种思路是最科学的解决方案,第三种思路解释了第四种思路的实现方式,当然,公式也有点复杂。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。