我试图创建一个公式或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个月,根据我上面规定的条件。
我能修一下这个公式吗?
发布于 2014-05-19 20:20:58
EDit:记账多年..。
=( (YEAR(B1)*12+MONTH(B1)) - (YEAR(A1)*12+MONTH(A1)) )
+ ( IF(DAY(A1)<=15,1,0)+IF(DAY(B1)>15,1,0) ) 发布于 2014-05-19 20:51:57
这里还有一个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 Functionhttps://stackoverflow.com/questions/23744895
复制相似问题