DATEDIF函数要“避坑”-3个bug的修正
哈喽⼤家好,我是余项。今天和⼤家继续介绍⽇期函数:DATEDIF。
如计算⼯龄、周岁等整⽉数结算,然⽽在上⼀次⽂章发表以后,后台收到了这样的⼀个问题:
2019-5-31 到 2019-6-30 实际已经是⼀整⽉了,但使⽤DATEDIF函数却判断不到1个⽉,到底问题出在哪⾥?今天我们就来解决DATEDIF在⽇常使⽤当中的3个bug。
bug1:两个⽉底判定不满⽉
⽉底,应该判定为⼀个整⽉,但从DATEDIF函数的返回来看,应该等到6⽉31⽇才返回⼀个整
5⽉31⽇和6⽉30⽇都是⽉底,应该判定为⼀个整⽉,但从
⽉,但实际⽣活中并不存在6⽉31⽇这个⽇期。
bug2:2⽉28⽇为起始⽇的问题
2⽉28⽇是2⽉的最后⼀天,⽽3⽉30⽇还没有到⽉底,正常我们应判定2⽉28⽇到3⽉31⽇才算⼀个整⽉,但从DATEDIF函数的计算来看,因为3⽉30⽇已经超过了当⽉的28⽇,所以错误的返回了⼀个整⽉
的结果
bug3:2⽉28⽇为结束⽇的问题
1⽉29⽇与2⽉28⽇的对⽐,因为后⾯⼀个⽇期是⽉底,所以正确的返回应该是⼀个整⽉,但是DATEDIF函数经过判断29>28返回未满整⽉的错误结果。
函数datedif是什么意思
BUG的修正⽅法
从上⽅例举我们可以看出问题都处在⽉底上⾯,修正的思路很简单,就是判断起始⽇和结束⽇是否为⽉底,如果有⽉底,则⽉底⽇期加1天,⽤下个⽉第⼀天的⽇期进⾏对⽐,否则则⽤DATEDIF正常判断。
=DATEDIF(IF(DAY(A2+1)=1,A2+1,A2),IF(DAY(B2+1)=1,B2+1,B2),"m")

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。