Excel函数返回月份之间的差异?
我有一个工作表,有一个开始date和结束date。 我需要得到这些date之间的月数。 我用公式=MONTH(B1)-MONTH(A1)
得到那#。 然而这个公式失败,当我的date跨越多年 – 如果开始date是1/1/2014和结束date是1/1/2015,然后返回一个“1”,当我想获得一个“12”。
然后我尝试了DATEDIF(A1,B1,"m")
来获得date之间的月份数,并且工作。 但是,我的问题可以通过下面的例子来总结:
情况1:
开始date:1/5/2014
结束date:3/1/2014
“MonthDif”: 2
DateDif: 1
情况2:
开始date:1/5/2014
结束date:3/10/2014
“MonthDif”: 2
DateDif: 2
正如你所看到的, DATEDIF
函数返回完整的月份数,而我的month - month
函数返回开始date和结束date之间差异“占用”的月数,无论它们是完整的月份。
我需要在任何date期间的月数,不pipe是整整几个月! 基本上,我需要的是什么MONTH(B1)-MONTH(A1)
返回,除了它将工作多年。
另外,我正在考虑devise一个自定义的VBA函数来达到上述目的。 如果有人有任何build议。
如果您使用DATEDIF
但始终从第一个月的第一个月开始计算,您将获得所需的数据,例如,如果您使用=A1-DAY(A1)+1
将会给出A1月份的第一个月份,像这样的DATEDIF
=DATEDIF(A1-DAY(A1)+1,B1,"m")
假设B1包含您的结束date,A1包含您的开始date,
=IF(DAY(B1)>=DAY(A1),0,-1)+(YEAR(B1)-YEAR(A1)) *12+MONTH(B1)-MONTH(A1)
我需要确切地说,
MONTH(B1)-MONTH(A1)
回报,除非它能够工作多年。
好的,好吧,冒着显而易见的风险:
=MONTH(B1)-MONTH(A1) + 12*(YEAR(B1)-YEAR(A1))
理由:一年有十二个月。