在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")&"日"
四、实现10日内的生日提醒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天后生日;;今日生日")设置提醒方式。
五、实现10日内的合同到期提醒
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屏蔽错误值。
我是EXCEL学习微课堂,头条教育视频原创作者,如果我的分享对您有帮助,欢迎点赞、收藏、评论、转发,更多的EXCEL技能,可以关注今日头条“EXCEL学习微课堂”。
,