【问题标题】:Why is the Excel DateDif function returning 0 months for dates between "4/30/2020" and "3/31/2020"?为什么 Excel DateDif 函数为“2020 年 4 月 30 日”和“2020 年 3 月 31 日”之间的日期返回 0 个月?
【发布时间】:2020-08-25 21:35:02
【问题描述】:

Microsoft 说 DateDif 函数:=DATEDIF(A3,B3,"M") 返回这两个日期之间的完整月数,假设 A3 = 开始月份,B3 = 结束月份。

但是,对于 2020 年 4 月 30 日到 2020 年 3 月 31 日之间的日期,我得到的值为 0。我希望得到的值为 1。DateDif 在 2020 年 3 月 1 日到 5/31/ 之间2020 年返回 2,而 2020 年 4 月 30 日到 2020 年 5 月 31 日之间的 datedif 则返回 1 - 这对我来说都是有意义的。那么为什么 2020 年 4 月 30 日到 2020 年 3 月 31 日之间的 DATEDIF 返回 0?

【问题讨论】:

  • 来自SUPPORT PAGEWarning: Excel provides the DATEDIF function in order to support older workbooks from Lotus 1-2-3. The DATEDIF function may calculate incorrect results under certain scenarios. 隐藏是有原因的。它在所有情况下都不能正常工作,他们不会修复它。
  • DATEDIF 使用第一个日期来确定月末。由于开始月份的天数比结束月份的天数多,因此它会确定整整一个月还没有过去。它的已知限制之一(尽管在支持页面上未提及)。

标签: excel excel-formula date-difference


【解决方案1】:

可以创建自己的版本并使用 vba 的DateDiff:

Function MyDateDif(srt As Date, ed As Date, str As String) As Long
    MyDateDif = DateDiff(str, srt, ed)
End Function

然后你会使用它:

=MyDateDif(A3,B3,"M")

它应该返回1

【讨论】:

  • Scott 的回答很好,但您的变量可能会受益于更具描述性的名称。
  • @Luuklag meh,这只是一个例子,它们在我脑海中起作用。 OP 可以随心所欲地称呼他们。
【解决方案2】:

您可以使用ROUNDDOWNYEARFRAC 来计算结果。这将返回一个小数并向下舍入到最接近的整数。我想这个故事的寓意是不要使用已弃用的功能。

=ROUNDDOWN(YEARFRAC(A3,B3)*12,0)

【讨论】:

    猜你喜欢
    • 2020-05-21
    • 2022-07-20
    • 2021-07-05
    • 2020-12-07
    • 1970-01-01
    • 2021-09-01
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多