在HR工作中,经常会遇到计算年龄和工龄,设置生日提醒、合同到期提醒等日期计算的问题,比如计算两个日期之间的天数、月数、年数。而EXCEL功能强大的隐藏日期函数DATEDIF,可以轻松解决这些日期计算的问题。
DATEDIF 是一个隐藏函数,它有3个参数:DATEDIF(start_date,end_date,unit)
1、start_date:起始日期
2、end_date:结束日期
温馨提示:起始日期和结束日期可以是带引号的日期文本字符串,比如“2018-8-8”,也可以是日期序列值、其他公式或者函数返回的运算结果,比如DATE(2018,8,8)等等。结束日期要大于起始日期,否则将返回错误值#NUM!。
3、unit:代表日期信息的返回类型,该参数不区分大小写,不同的unit参数对应返回不同的结果。
'y'返回时间段中的整年数
“m”返回时间段中的整月数
“d”返回时间段中的天数
'md”参数1和2的天数之差,忽略年和月
'ym“参数1和2的月数之差,忽略年和日
'yd”参数1和2的天数之差,忽略年。按照月、日计算天数
1、两日期相差年数=DATEDIF(B3,C3,'Y')
2、两日期相差月数=DATEDIF(B4,C4,'M')
3、两日期相差天数=DATEDIF(B5,C5,'D')
4、忽略日和年,两日期相差月数=DATEDIF(B6,C6,'YM')
5、忽略年,两日期相差天数=DATEDIF(B7,C7,'YD')
6、忽略月和年,两日期相差天数=DATEDIF(B8,C8,'MD')
1、根据身份证号计算周岁年龄
D2单元格公式:=DATEDIF(--TEXT(MID(B2,7,8),'0-00-00'),TODAY(),'Y')
公式解析:
① MID(B2,7,8),从身份证的第7位数开始截取8位数;
②--TEXT(MID(B2,7,8),'0-00-00'),用TEXT函数将截取的8位数转为日期格式0-00-00;
③TODAY()返回当前的日期,比如今天是2018年8月8日,就返回今天的日期;
④DATEDIF(--TEXT(MID(B2,7,8),'0-00-00'),TODAY(),'Y')通过DATEDIF计算周岁年龄。
2、根据工作时间计算到今天(2018年8月8日)止的精确工龄
E2单元格公式:
=DATEDIF(C2,TODAY(),'y')&'年'&DATEDIF(C2,TODAY(),'ym')&'月'&DATEDIF(C2,TODAY(),'md')&'日'
DATEDIF函数不但可以直接计算出两个日期间隔的年数、月数、天数,而且还有很多延伸应用,比如实现下表中的10日内生日提醒功能。
D2单元格公式:
=TEXT(10-DATEDIF(C2,TODAY()+10,'yd'),'0天后生日;;今日生日')
公式解析:
① DATEDIF(C2,TODAY()+10,'yd')因为要实现提前10日提醒,所以要先计算出生年月到10日后的天数;
② 10-DATEDIF(C2,TODAY()+10,'yd')计算离生日相差的天数
③ TEXT(10-DATEDIF(C2,TODAY()+10,'yd'),'0天后生日;;今日生日')设置提醒方式。
D2单元格公式:
=IFERROR(TEXT(10-DATEDIF(C2,TODAY()+10,'yd'),'0天后合同到期;;今日合同到期'),'')
公式解析:
① DATEDIF(C2,TODAY()+10,'yd')因为要实现提前10日提醒,所以要先计算出生年月到10日后的天数;
② 10-DATEDIF(C2,TODAY()+10,'yd')计算离合同到期相差的天数
③ TEXT(10-DATEDIF(C2,TODAY()+10,'yd'),'0天后合同到期;;今日合同到期')设置提醒方式。
④ 最后用IFERROR屏蔽错误值,由于DATEDIF要求结束日期一定要大于开始日期,否则会出错,而实际结束日期TODAY()+10是2018年8月18日,比案例中合同到期的2018年9月27日要小,所以会返回错误值#NUM,可以用IFERROR屏蔽错误值。
联系客服