为什么 Excel DateDif 函数对于“4/30/2020”和“3/31/2020”之间的日期返回 0 个月?
Why is the Excel DateDif function returning 0 months for dates between "4/30/2020" and "3/31/2020"?
Microsoft 表示 DateDif 函数:=DATEDIF(A3,B3,"M")
returns 这两个日期之间的完整月数,假设 A3 = 开始月份,B3 = 结束月份。
但是,对于 2020 年 4 月 30 日和 2020 年 3 月 31 日之间的日期,我得到的值为 0。我期望得到的值为 1。DateDif 在 2020 年 3 月 1 日和 5/ 之间31/2020 returns 2,而 datedif 在 4/30/2020 和 5/31/2020 returns 1 之间 - 这两个对我来说都很有意义。那么,为什么 2020 年 4 月 30 日和 2020 年 3 月 31 日之间的 DATEDIF 返回 0?
可以创建自己的版本并使用 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")
returns1
应该
您可以使用 ROUNDDOWN
和 YEARFRAC
来计算结果。这将 return 一个小数并向下舍入到最接近的整数。我想这个故事的寓意是不要使用已弃用的函数。
=ROUNDDOWN(YEARFRAC(A3,B3)*12,0)
Microsoft 表示 DateDif 函数:=DATEDIF(A3,B3,"M")
returns 这两个日期之间的完整月数,假设 A3 = 开始月份,B3 = 结束月份。
但是,对于 2020 年 4 月 30 日和 2020 年 3 月 31 日之间的日期,我得到的值为 0。我期望得到的值为 1。DateDif 在 2020 年 3 月 1 日和 5/ 之间31/2020 returns 2,而 datedif 在 4/30/2020 和 5/31/2020 returns 1 之间 - 这两个对我来说都很有意义。那么,为什么 2020 年 4 月 30 日和 2020 年 3 月 31 日之间的 DATEDIF 返回 0?
可以创建自己的版本并使用 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")
returns1
应该
您可以使用 ROUNDDOWN
和 YEARFRAC
来计算结果。这将 return 一个小数并向下舍入到最接近的整数。我想这个故事的寓意是不要使用已弃用的函数。
=ROUNDDOWN(YEARFRAC(A3,B3)*12,0)