日期是由连续的序列号来保存的,如果需要计算两个日期间隔的总天数,用简单的减法就可以实现。但是,有时候需要将间隔的总天数折合成多少年多少个月零多少天的形式,又该如何操作呢?
比如,在日常应用中,通常需要计算两个日期间隔的年月天等信息,比如在统计人员信息的时候、或者想要了解单位人员年龄、工作时间、或者距离退休还有多久等等,这样的情况下,就需要在Excel中进行计算。那么如何实现呢,这里和大家分享一下,也给自己留个存档,以备不时之需。首先在Excel中需要使用DATEDIF函数来实现,应用该函数可以计算两个日期的之间相隔“几年”、“几个月”、“几天数”,以及知道相隔“几年几个月”、“几年几个月几天”等等。那么到底如何实现呢,下面让我们来看看DATEDIF函数吧。
DATEDIF函数用于返回两个日期间隔的天数、月数或年数。
基本语法如下: DATEDIF(start_date,end_date,unit)
其中,第1参数start_date代表起始日期,
第2参数end_date代表终止日期。
要求终止日期必须大于等于起始日期,否则计算将返回错误。 这个两个日期可以多种输入方式,可以是常用的日期格式2007-08-09、也可以是其他公式或函数的结果(Today()、DATEVALUE("2007-8-9")、DATE(2008,8,8)等)。第3参数unit为要返回的信息的类型,支持使用数组。该参数有如下六种:
(1)"Y" 时间段内的整年数。
(2)"M" 时间段内的整月数。
(3) "D" 时间段内的天数。
(4) "YD" start_date 和 end_date 之间相差的天数。忽略日期中的年份。
(5) "MD" start_date 和 end_date 之间相差的天数。忽略日期中的月份和年份。
(6) "YM" start_date 和 end_date 之间相差的月数。忽略日期中的天和年份。
3、实例:(以下实例中,当前日期均为2018-5-31)
(1)计算出生日期为2007-08-09人的年龄
公式:=DATEDIF("2007-08-09",TODAY(),"Y")
结果:10
简要说明:当单位代码为"Y"时,计算结果是两个日期间隔的年数.
(2):计算日期为2007-08-09和当前日期的间隔月份数.
公式:=DATEDIF("2007-08-09",TODAY(),"M")
结果:129
简要说明:当单位代码为"M"时,计算结果是两个日期间隔的月份数.
(3):计算日期为2007-08-09和当前日期的间隔天数.
公式:=DATEDIF("2007-08-09",TODAY(),"D")
结果:3948
简要说明:当单位代码为"D"时,计算结果是两个日期间隔的天数.
(4)计算日期为2007-08-09和当前日期的不计年数的间隔天数.
公式:=DATEDIF("2007-08-09",TODAY(),"YD")
结果:296
简要说明:当单位代码为"YD"时,计算结果是两个日期间隔的天数.忽略年数差
(5)计算日期为2007-08-09和当前日期的不计月份和年份的间隔天数.
公式:=DATEDIF("2007-08-09",TODAY(),"MD")
结果:22
简要说明:当单位代码为"MD"时,计算结果是两个日期间隔的天数.忽略年数和月份之差
(6)计算日期为2007-08-09和当前日期的不计年份的间隔月份数.
公式:=DATEDIF("2007-08-09",TODAY(),"YM")
结果:9
简要说明:当单位代码为"YM"时,计算结果是两个日期间隔的月份数.不计相差年数
对于上述的函数可以综合应用,计算出两个事件之间相差的“几年几个月几天”,比如某个宝宝于2007年8月9日出生,截止当前日期2018年5月31日(也可以用函数today()代替当前日期,这样就能随时计算宝宝的年龄了)!
假设起始日期在A1,结束日期在B1,用如下公式即可计算出:
="宝宝已经出生"&DATEDIF(A1,B1,"y")&"年"&DATEDIF(A1,B1,"ym")&"个月"&DATEDIF(A1,B1,"md")&"天了"
返回的结果为“宝宝已经出生10年9个月22天了”!
怎么样,这个功能还不错吧?当然了,公式中的汉字是可以根据自己的需要进行修改的!
还有一种方案,结合TEXT、SUM函数一起实现,代码如下:
=TEXT(SUM(DATEDIF(A1,B1,{"y","ym","md"})*{10000,100,1}),"宝宝已经出生0年00个月00天了!!")
使用这个公式将返回“宝宝已经出生10年09个月22天了”!
关于TEXT、SUM函数组合实现的原理就不再解释了,想了解的,大家去问问度娘吧!
发表评论