专栏名称: Excel之家ExcelHome
excel技巧原创教程每日推送,excel表格职场模板干货仓库,图文/视频/动画等多种教学方式分享excel操作技巧教程/excel函数公式教程/excel数据透视表教程/excel图表教程/Word教程,助您轻松提高办公效率!
目录
相关文章推荐
Excel之家ExcelHome  ·  运用AI实现Excel和PPT增效 ·  3 天前  
Excel之家ExcelHome  ·  几个Excel技巧,操作简单效果好 ·  5 天前  
Excel之家ExcelHome  ·  这些Excel函数教程,竟然全是ChatGP ... ·  3 天前  
Excel之家ExcelHome  ·  用条件格式制作项目进度图 ·  4 天前  
完美Excel  ·  避免#DIV/0!错误 ·  1 周前  
51好读  ›  专栏  ›  Excel之家ExcelHome

DATEDIF函数的这个Bug,计算日期必须要注意

Excel之家ExcelHome  · 公众号  · Excel  · 2017-06-21 07:03

正文

导语

职场中有很多工作会涉及到日期,比如租金、实习期,财务中又往往以两个日期间隔的整月数来作为结算,而这又恰恰是初学者普遍感到困难的问题。多算一个月就是一个月的租金,那都是钱呢!!!


更尴尬的是作为办公室的骄傲,鼎鼎有名的"函数高手"具体连判断月份都不会,如何自处,如何自处呀?


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