导语
职场中有很多工作会涉及到日期,比如租金、实习期,财务中又往往以两个日期间隔的整月数来作为结算,而这又恰恰是初学者普遍感到困难的问题。多算一个月就是一个月的租金,那都是钱呢!!!
更尴尬的是作为办公室的骄傲,鼎鼎有名的"函数高手"具体连判断月份都不会,如何自处,如何自处呀?
2017-3-31 到 2017-4-30 实际已经是一整月了,但DATEDIF函数却认为不到一个月...
2017-1-29 到 2017-2-28 也已经有一个月了,但DATEDIF同样认为不到一个月!...
做一个技艺精湛的职场手工艺者
DATEDIF
语法
DATEDIF(起始日期,终止日期,间隔单位)
当【间隔单位】为 m 时即返回两个日期之间的间隔月数,或者说间隔整月数。
例:
=DATEDIF("2016/2/27","2017/3/26","m")
=12
初次接触这个函数一定会感叹这简直就是“天赐“呀!然后兴奋不已,哈,看官不知道您曾经是不是也是这个情况?:)
例举
警惕!警惕!警惕!
它是隐藏函数,Excel帮助文档里没有,编辑这个函数时也没有函数提示工具,它更像一个中途夭折的函数,存在某种缺陷而最终未能顺利产下的婴儿。
图1
图1中标黄色的行都是DATEDIF函数在统计间隔月份时出错的,C列单元格公式是直接套用DATEDIF的结果,以C2单元格为例公式如下。
=DATEDIF(A2,B2,"m")
第4行
2017/3/31 与 2017/4/30 都是月底,因此是妥妥的一整月,但从DATEDIF函数的表现看,似乎要等到2017/4/31日也算一整月。可惜4月只有30号。
第5行
2017/2/28 与 2017/3/28 ,前者是月底,需要到3月31日(月底)才算一整月,但从DATEDIF函数的表现看,似乎因为日期都是28日所以就算一整月了。太草率了!!写这个函数的程序猿需要尴尬地笑笑。
第6行
2017/1/29 与 2017/2/28,后者是月底,因此即使是2017/1/31开始也已经是一整月了。而DATEDIF函数关注的显然又是日期,29大于28,所以不到!个月!
症结
从上方例举我们可以看出问题都处在月底上面,DATEDIF函数只关注了日期的天信息,忽视了对月底信息的判断,没有提高月底日期的优先级。
所以要做两件:判断月底 和 提升月底优先级
月底判断
日期数据的本质是数字序列值,一天对应整数1,因此如果某个日期数据+1成为某月的1号,那么这个日期就是月末。
公式1
=day(日期+1)=1
提升月底优先级
间隔月数计算时是同时考虑月和日的信息的,如果将月底数据+1,让它成为下一个月的日期,那么在间隔月数计算时就相当于大大提升了优先级。
2月28日至3月29日,DATEDIF函数判断间隔月数为1月,但如果把月底2月28日提升优先级变成3月1日,那么肯定不会计算成1整月了。
如果两个日期都是月底,那么两个日期都变成各自下一个月的1号,也能正常的返回间隔月份!
公式2
=if(day(日期+1)=1,日期+1,日期)
完美!
补丁
图1【实际相隔月数】列D2单元格公式如下:
=DATEDIF(IF(DAY(A2+1)=1,A2+1,A2),IF(DAY(B2+1)=1,B2+1,B2),"m")
即对日期进行月底判断和提升优先级处理。
做一个技艺精湛的职场手工艺者
吐槽
当时用函数公式解决同学的问题我仅仅花了3分钟,写这个微信图文我花了绝对不少于3个小时!Excel函数公式教学绝对是视频首选!!!
视频观看
图文作者:胡剑
Excel函数实战技巧精粹 - 第18期
公开课时间:6-27、6-28(晚20:00~21:30)
正式课时间:7-4 ~ 8-1
讲师:胡剑0227
点击【阅读原文】 查看课程详情:
免费公开课QQ群 246666938