Excel算工龄、算年龄、生日提醒、合同提醒,DATEDIF函数全部搞定!

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())<=7,TEXT(TEXT(C2,"M-D")-TODAY(),"0天后生日;;今天生日"),"")

图片

图片

3.算员工工龄/合同到期

以计算工龄为例:

这样的工龄天数计算,我相信人人都会做把!

用截止日期减去今天,最后做一个条件格式:

员工1迄今为止在职406天,

当然,你也可以用这个计算值除以365

换算成在职年限,

这种做法不算精准

图片

如果你的要求是要做成下面这个样子,就必须要要用到DATEDIF函数了!

图片

公式有点长,直接可以套用:

=TEXT(DATEDIF(C2,TODAY(),"Y"),"0年;;")&TEXT(DATEDIF(C2,TODAY(),"YM"),"0个月;;")&TEXT(DATEDIF(C2,TODAY(),"MD"),"0天;;")

解析:

分别计算出:

Y年份

YM忽略年和日的月差

MD忽略年和月的日差

如果你直接把这三个内容相连,可能会出现这样的情况:

0年0月20天

很奇怪..

所以你需要用TEXT函数进行转换

浓缩版:

=TEXT(Y年份,"0年;0;")&TEXT(YM忽略年和日的月差,"0个月;0;")&TEXT(MD忽略年和月的日差,"0天;0;")

同样是TEXT的自定义功能用法:正数;负数;零

如:TEXT(Y年份,"0年;0;")

如果Y年份算出来是正数就是例如:1年

如果Y年份算出来不可能为负数,

如果Y年份算出来为0那么则不显示.

月份逻辑也是一样的,最后的结果如果是0年2月12天

组合出来的结果就是:

2个月12天

THE END