工作中经常会遇到涉及日期间隔的计算问题,比如计算两个日期之间的天数、月数、年数,这时需要用到Excel中一个秘密函数。
说到“秘密”,是因为你在微软Excel提供的的函数列表里是找不到它的,连帮助文件中也没有相关说明,它就是DATEDIF函数。
DATEDIF函数可以理解成英文date和different的缩写,表示日期差异或日期间隔,该函数的语法结构如下:
• DATEDIF(起始日期,终止日期,参数)
参数 | 参数含义 |
Y | 日期差异的整年数 |
M | 日期差异的整月数 |
D | 日期差异的天数 |
MD | 日期差异的天数,忽略日期中的月和年 |
YM | 日期差异的月数,忽略日期中的日和年 |
YD | 日期差异的天数,忽略日期中的年 |
函数要求起始日期比结束日期早。结合下面的案例,介绍一下DATEDIF函数常见的几种用法。
1
计算项目时长
下图是根据项目的开始和结束日期,计算项目的时长。分别用参数“Y”、“M”和“D”来计算项目时长的年数、月数和天数,当然天数可以直接用日期相减也可以。
2
动态计算年龄工龄
如果结束日期是动态的,比如根据出生日期计算年龄,根据入职日期计算企业工龄,都可以用DATEDIF函数结合TODAY()来实现。
根据员工出生日期计算年龄,今天日期是2018年11月5日,员工张三丰年龄是26周岁。用这种方式,每天打开员工信息表,当天过生日的员工年龄会自动增加,从而实现动态计算。
(按2018年11月5日打开文件计算)
3
实现生日提醒
DATEDIF函数不但可以直接统计出两个日期间隔的年数、月数、天数,而且还有很多延伸应用,比如实现生日提醒功能。
(按2018年11月5日打开文件计算)
要Excel实现根据员工的出生日期,在10天内实现生日提醒。在C5单元格输入以下公式:
=TEXT(10-DATEDIF(B5-10,TODAY(),"yd"),"还有0天生日;已过0天;今天生日")
这里用到了万能函数TEXT,根据数据的正值、负值和零值来进行判断。具体可以参考之前写的《用Excel中的魔术师--TEXT函数,规范文本显示格式》。