今天来给大家讲讲DATEDIF函数,说起这个函数,80%的Excel用户都很熟悉。
毕竟,它在计算年龄、间隔时间等工作中,应用广泛。
=DATEDIF(开始日期,结束日期,返回类型)
这里第3参数有六种表示方式:
看这个表可能有点晕,我们用图示的方法来展示一下,用不同的颜色来标记时间距离。
下面我们通过一个案例,加深一下对这个函数的了解。
案例:
计算小朋友的年龄(按照“X岁X月X天"格式)。
这个公式比较长,其实它是3个部分组成的。
公式如下:
=DATEDIF(A2,TODAY(),"y")&"岁"&DATEDIF(A2,TODAY(),"ym")&"个月"&DATEDIF(A2,TODAY(),"md")&"天"
对比一下之前的示意图,是第一行的三种表示方法。
这个函数非常实用,但是,这个日期函数,却并不在Excel函数库中!
那么问题来了,如此好用却要雪藏!到底是为什么呢?
原来,函数虽好用,却自带BUG。
下面,我们来看一下这个表格,我们要计算不同的商铺租赁的整月份。
输入公式:=DATEDIF(开始日期,结束日期,"M")
这个公式应该没错呀?
为什么最后一行,明明是一个月,计算出来却是0个月呢?
这就是DATEDIF函数的BUG。
我们在计算整月份的时候,如果同时满足下面两个条件,这个BUG就会出现。
① 起止日期都是月末。比如这里的,31和30都是当月的月末。
② 开始日期的“日”的值,大于结束日期的“日”的值,比如这里,31日大于30日。
知道了BUG出现的条件,我们就可以想办法规避它。
现下,我们可以把公式调整为:
完整的公式如下:
=IF((DAY(C2+1)=1)*(DAY(C2)
最后再啰嗦两点:
①如果结束日期是闰年的2月末的时候,可能会出现到28日就计算为一整年了,而不是29日。
②还有直接以“md”作为第三参数的时候,也会出现BUG,大家应避免用这个第三参数,改用其他函数替代。
好的,以上,就是今天的分享。