DATEDIF函数是一个隐藏的日期函数,用于计算两个日期之间的天数、月数或年数。在Excel的函数列表中没有显示此函数,帮助文件中也没有相关说明。
其基本语法如下。
DATEDIF(start_date,end_date,unit)
start_date代表时间段内的起始日期。该日期可以是带引号的日期文本串(如“2018/1/30”)日期序列值、其他公式或函数的运算结果[如DATE(2018,1,30)]等。
end_date代表时间段内的结束日期。结束日期要大于起始日期,否则将返回错误#NUM!。
unit为所需信息的返回类型,该参数不区分大小写。不同unit参数返回的结果如下表所示。
unit参数 | DATEDIF函数不同参数作用及函数返回结果 |
Y | 时间段中的整年数 |
M | 时间段中的整月数 |
D | 时间段中的天数 |
MD | 日期中天数的差。忽略日期中的月和年 |
YM | 日期中月数的差。忽略日期中的日和年 |
YD | 日期中天数的差。忽略日期中的年 |
DATEDIF函数的第三参数使用“Y”,表示计算时间段中的整年数
例 计算员工工龄工资
下图所示为某公司工资表的部分内容,需要根据B列的入司日期计算工龄费。计算规则是:入司每满一年工龄费50元,最高300元封顶,工龄计算的截止时间为2017年12月31日。
在C2单元格中输入以下公式,并向下复制到C10单元格。
=MIN(300,DATEDIF(B2,"2017/12/31","y")*50)
DATEDIF函数的第三参数使用“Y”,计算入司日期到2017年12月31日的整年数, 不足一年的部分将被舍去。
用DATEDIF函数计算出的员工入职年数乘以50计算出工龄费。最后使用MIN函数,在计算出的工龄费和300两个数值中取最小值。也就是当工龄费高于300元时按300元计算结果,当工龄费不足 300元时按实际计算结果。
DATEDIF函数的第二参数使用“M”,表示计算时间段中的整月数。
例 计算职工参保未缴月数
DATEDIF函数的第二参数使用“M”,计算B2单元格的日期与C2单元格的日期间隔的月数。
DATEDIF函数的第二参数使用“YD”,表示计算时间段中忽略年份的天数差
例 员工生日提醒
在下图所示的员工信息表中,B列是员工的出生日期。HR部门在员工生日时需要送出生日礼物,因此希望在生日前10天进行提醒。
在C2单元格中输入以下公式,并向下复制到C9单元格。
=TEXT(10-DATEDIF(B2-10,TODAY(),"YD"),"还有0天生日;;今天生日")
DATEDIF函数的第二参数使用“YD”忽略年份和月份计算天数差。
因为希望提前10天提醒,所以使用出生日期-10作为DATEDIF函数的第一参数假定。
当前日期为2018年1月1日,出生日期为1972年12月25日,“DATEDIF(B2-10TODAY(),"YD")”部分表示忽略年数计算出生日期-10到当前日期的天数差,也就是计算1972年12月25日到2018年1月1日的天数差,结果为7。再用10减去该结果,得到当前日期和生日的实际相差天数为3天。
最后使用TEXT函数处理DATEDIF函数的计算结果。大于0显示为“还有N天生日”,小于0显示为空值,等于0显示为“今天生日”。
TEXT函数格式代码使用“"还有0天生日;;今天生日””,分别指定大于0时显示为还有N天生日”,小于0时显示为空白,等于0时显示为“今天生日”。
如果出生日期是闰年2月29日,可以特别指定平年的2月28日或3月1日生日,否则只能每4年过一次生日。
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved