多语言展示
当前在线:832今日阅读:167今日分享:16

EXCEL中隐藏函数DATEDIF的BUG修正

在EXCEL中,有一些隐藏的函数,用好它们能快速达到目的,最常用的是DATEDIF,但此函数在使用过程中,有个致命的错误,需要加以修正。
工具/原料
1

电脑

2

EXCEL软件

方法/步骤
1

DATEDIF函数,是Excel中的隐藏函数之一,其帮助文档里没有,使用时也没有用法提示,完全是靠咨询、网上查找才知道的函数,其使用方法,前文已作过介绍,这里不再赘述,可以参看下:“EXCEL中隐藏函数DATEDIF的使用”。

2

刚接触此函数的时候,感觉神了,为什么会把这么好用的函数隐藏呢?慢慢在使用过程中发现了此函数存在点问题,不知是否基于此原因,微软才将其隐藏。

3

比如参数为“M”时,求实足月数,当日期参数在月底的时候,只要结束日期中的“日”大于等于开始日期中的“日”,即会按整月算,而结束日期中的“日”小于开始日期中的“日”,则按不足一月算,忽视了对当月最后一天的判断。

4

参数为“Y”时,求实足年数,当开始日期或结束日期当年是闰年,并且是2月底时,也会出现BUG。

5

参数为“YM”时,忽略年求月数时,也存在类似的问题。

6

经过比较推敲,发现所有问题都出现在月底,有“月大”、“月平”、“月小”之分,而函数却只按“日”的大小判断,不管有没有到月底。因此要继续使用此函数,就要想办法对此问题进行补救,先判断是否月底,判断方法:凡是日期增加1日后是次月1日的,那该日期就是月底,而判断是否为1日是比较简单的,只要看DAY函数的结果是否为1。

7

这样就巧妙的避开了“月大”、“月平”、“月小”的问题,凡是月底,都改为次月1日,没到月底的维持不变,不会改变足月结果:=DATEDIF(A2+(DAY(A2+1)=1),B2+(DAY(B2+1)=1),'YM')。

8

在此基础上进一步探讨,管它是否到月底,都加上1天进行计算,也就是到了月底的会变成次月1日,没到月底的也加上1天,反正是同时加上1天,丝毫不会影响上面的结果,公式变得比较简洁:=DATEDIF(A2+1,B2+1,'YM'),类似的,公式中的“YM”参数可以是“M”、“Y”参数。

推荐信息