gpt4 book ai didi

vba - 两个日期之间的月数

转载 作者:行者123 更新时间:2023-12-04 20:00:14 25 4
gpt4 key购买 nike

我正在尝试创建一个公式或 VBA 函数来计算两个日期之间的月数,根据此规则:如果开始日期是每月 15 日或之前,或者结束日期是每月 15 日之后,然后那个月很重要。

例如:

Start Date   End Date   Output
---------- --------- --------
1/5/2014 2/16/2014 2 months
1/17/2014 2/16/2014 1 month
1/16/2014 2/5/2014 0 months

我已经尝试过 =DATEDIF(A2, B2, "M") + IF( DATEDIF(A2, B2, "MD")>=15, 1, 0)但这只会在 2 个日期之间的距离超过 15 天的情况下增加一个月。例如,如果开始日期是 5/14/13-8/16/13,它会说这些日期之间有 3 个月。但是,根据我上面指定的条件,这两个日期之间的实际距离应该是 4 个月。

我如何修复这个公式?

最佳答案

这也是一个vba解决方案

Function date_diff_to_months(date1 As Date, date2 As Date) As Integer


Dim y1 As Integer
Dim y2 As Integer
Dim d1 As Integer
Dim d2 As Integer
Dim m1 As Integer
Dim m2 As Integer
Dim m_diff As Integer
Dim y_diff As Integer
Dim month_adjustment As Integer

y1 = Year(date1)
y2 = Year(date2)
m1 = Month(date1)
m2 = Month(date2)
d1 = Day(date1)
d2 = Day(date2)

m_diff = m2 - m1
y_diff = (y2 - y1) * 12

If (m_diff > 0 Or y_diff > 0) Then
If (d1 <= 15 And d2 >= 15) Then
month_adjustment = 1
ElseIf (d1 >= 15 And d2 <= 15) Then
month_adjustment = -1
End If
End If

date_diff_to_months = m_diff + y_diff + month_adjustment
End Function

关于vba - 两个日期之间的月数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23744895/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com