我正在尝试创建一个公式或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)
但如果两个日期的天数之间的距离超过15,则只会增加一个月。例如,如果开始日期为5/14 / 13-8 / 16/13,会说这些日期之间有3个月的时间。但是,根据我在上面指定的条件,这两个日期之间的实际距离应为4个月。
我能解决这个问题?
答案 0 :(得分:1)
编辑:帐户多年...
=( (YEAR(B1)*12+MONTH(B1)) - (YEAR(A1)*12+MONTH(A1)) )
+ ( IF(DAY(A1)<=15,1,0)+IF(DAY(B1)>15,1,0) )
答案 1 :(得分:1)
这也是一个vba解决方案
Function date_diff_to_months(date1 As Date, date2 As Date)
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