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)) 

理由:一年有十二个月。