我有一个包含开始日期和结束日期的工作表。我需要获取这些日期之间的月数。我使用公式 =MONTH(B1)-MONTH(A1)
来获取该 #。然而,当我的日期跨越多年时,这个公式会失败 - 如果开始日期是 1/1/2014,结束日期是 1/1/2015,那么当我想得到“12”时,它会返回“1”。
然后我尝试 DATEDIF(A1,B1,"m")
来获取日期之间的月份数,并且成功了。但是,我的问题可以通过以下示例进行总结:
情况1:
Start Date: 1/5/2014
End Date: 3/1/2014
"MonthDif": 2
DateDif: 1
情况2:
Start Date: 1/5/2014
End Date: 3/10/2014
"MonthDif": 2
DateDif: 2
如您所见,DATEDIF
函数返回完整 月份数,而我的month - Month
函数返回月份数“占用”开始日期和结束日期之间的差异,无论它们是否是完整的月份。
我需要任何日期期间的月数,无论是否完整月份!基本上,我需要的正是 MONTH(B1)-MONTH(A1)
返回的内容,除非它可以工作多年。
此外,我正在考虑设计一个自定义 VBA 函数来实现上述目标。如果有人有任何建议。
最佳答案
如果您使用 DATEDIF
但始终从第一个月的 1 号开始计数,您将获得所需的内容,例如如果您使用 =A1-DAY(A1)+1
将为您提供 A1 月的第一天,因此请在 DATEDIF
中使用它,如下所示
=DATEDIF(A1-DAY(A1)+1,B1,"m")
关于Excel函数返回月份之间的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27001994/