Excel函数返回月份之间的差异?

标签 excel vba function

我有一个包含开始日期和结束日期的工作表。我需要获取这些日期之间的月数。我使用公式 =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/

相关文章:

excel - 提取包含特定单词的句子

excel - 从 VB 脚本运行 Excel 宏,但不提示 VBA 运行时错误

c - 将数组传递给 C 中的函数来存储数据

c - 为什么我仍然收到这些错误?

Excel vba 直方图 bin

Java 兴趣点 : How to find an Excel cell with a string value and get its position (row) to use that position to find another cell

vba - 您可以为 Excel 中的列指定变量名称吗?

vba - 计算平均值时单元格和范围之间的差异

vba - 如何在 VBA 中动态调整数组的大小?我不断收到下标和索引问题

database - Postgresql 存储过程/函数在 Multi-Tenancy 环境中的性能,该环境具有一个数据库和多个模式(每个租户一个)