DATEDIF函数,是一个隐藏函数,你或许看到过这个函数,
这一章,我会要讲到DATEDIF函数所有的用法,
其实有些实战案例还是有一些难度的!
首先你可以保存一下这张图片:
这张图片,包含了这个函数所有的用法,
此函数的意义在于计算时间差,公式:
DATEDIF(开始时间,结束时间,模式)
如:
你想要计算开始时间和结束时间跨越的年份:
DATEDIF("2001/5/2","2022/6/14","Y")
结果为:21
如果你要计算开始时间和结束时间跨越的所有月份:
DATEDIF("2001/5/2","2022/6/14","M")
结果为:253
总天数差计算:
DATEDIF("2001/5/2","2022/6/14","D")
结果为:7713
在同月中计算日差计算:
DATEDIF("2001/5/2","2022/6/14","MD")
结果为:12
这个结果是直接忽略年份月份,计算日差值
年份内的月差值计算:
DATEDIF("2001/5/2","2022/6/14","YM")
结果为:1
这个结果是忽略年份和日,计算月差值
年份内的日差计算:
DATEDIF("2001/5/2","2022/6/14","YD")
结果为:43
这个结果是忽略年份和月份,计算日差值
如果你自己在做相关计算的时候,如果不确定你所需要的内容体现,你可以按照我这个方法,先制作一个图谱,然后再根据需求进行挑选.
实战案例
1.年龄计算
先用MID函数截取出生日期,然后用TEXT函数讲起变成日期模式,最后使用DATEDIF函数来做年份的模式的计算:
可以直接复制套用此公式:
=DATEDIF(TEXT(MID(C2,7,8),"00-00-00"),TODAY(),"Y")
2.做生日提醒
下方是一些员工的生日,如何做一个生日提醒,并且是提前7天进行提醒,你可以使用到下面的公式:
=TEXT(7-DATEDIF(C2-7,TODAY(),"YD"),"0天后生日;;今天生日")
公式解析,以员工2为例:
DATEDIF(C3-7,TODAY(),"YD")这个计算结果是忽略年份月份的日差值.
C3-7,代表6月25号往前推7天就是6月18日,
今天是6月24号,用DATEDIF算出来的结果是:
DATEDIF(C3-7,TODAY(),"YD")=6
7-DATEDIF(C3-7,TODAY(),"YD")=1
但是加上TEXT函数之后,又可以再加一重文本判断:
在自定义格式中,数值有3个位置:
正数;负数;零
那么,下方这个格式:
还有0天生日;;今天生日
意思就是:当DATEDIF函数的数值为正数的时候例如:5天,则转换为:
5天后过生日.
如果出现负数,第二个位置没有输入任何内容,所以负数不会显示出来
当DATEDIF函数的数值结果为0,代表正好今天过生日,
那么0的位置就会变成今天生日.
=TEXT(7-DATEDIF(C3-7,TODAY(),"YD"),"0天后生日;;今天生日")
的结果就是:1天后生日
如上图所示.
这个公式中如果是提前7天提醒就把中间数字写到7,如果是10天就写到10
此公式可以直接套用!
再看看如果是员工1:
=TEXT(7-DATEDIF(C2-7,TODAY(),"YD"),"0天后生日;;今天生日")
生日是6月18号,今天是6月24号
C2-7=6月11号
DATEDIF(C2-7,TODAY(),"YD")=13
7-DATEDIF(C2-7,TODAY(),"YD")=-6
=TEXT(-6,"0天后生日;;今天生日")
代表TEXT函数中间的第2个自定义位置.
所以最后的输出结果是空
除此以外,你还可以套用这个公式:
=IF((TEXT(C2,"M-D")-TODAY())