کیم یک کاربرگ دارد که در آن تاریخ شروع (ستون C) و تاریخ پایان (ستون D) را در آن قرار می دهد. او به روشی برای محاسبه تعداد پایان ماه بین این دو تاریخ نیاز دارد. به عنوان مثال، اگر تاریخ شروع 1/1/17 و تاریخ پایان 7/31/17 باشد، تعداد ماه های پایانی 7 است. اما اگر تاریخ پایان 17/7/30 باشد، تعداد ماه است. به پایان می رسد 6.
هر تعداد فرمول وجود دارد که می توانید برای محاسبه تعداد مناسب ابداع کنید. ساده ترین فرمول این است که همیشه می توانید روی تاریخ ستون C که شروع یک ماه است حساب کنید. در این صورت، فرمول زیر به خوبی کار خواهد کرد:
=DATEDIF(C1,D1+1,"m")
اگر نمی توانید روی ستون C حاوی تاریخی که شروع یک ماه است حساب کنید، اما می توانید روی تاریخ های آغاز و پایان همیشه در یک سال حساب کنید، هر یک از فرمول های زیر این کار را انجام می دهد:
=IF(MONTH(D1+1)=MONTH(D1),MONTH(D1)-MONTH(C1),MONTH(D1)-MONTH(C1)+1)
=IF(MONTH(D1+1)=MONTH(D1),MONTH(D1)-1,MONTH(D1))-MONTH(C1)+1
=MONTH(EOMONTH(D1,0))-MONTH(EOMONTH(C1,0))+(EOMONTH(D1,0)=D1)
=IF(EOMONTH(D1,0)=D1,MONTH(D1)-MONTH(C1)+1,MONTH(D1)-MONTH(C1))
=IF(D1اگر سال های تاریخ شروع و پایان ممکن است متفاوت باشند، پس فرمول ها کمی پیچیده تر هستند. هر یک از تغییرات زیر، تعداد صحیح پایان ماه ها را در محدوده تاریخ محاسبه می کند:=12*(YEAR(D1)-YEAR(C1))+MONTH(D1)-MONTH(C1)+INT(D1=EOMONTH(D1,0))
=12*(YEAR(D1)-YEAR(C1))+MONTH(D1)-MONTH(C1)+IF(EOMONTH(D1,0)=D1,1,0)
=12*YEAR(D1)+MONTH(D1)-12*YEAR(C1)-MONTH(C1)+IF(D1=EOMONTH(D1,0),1,0)
=12*YEAR(D1)+MONTH(D1)-12*YEAR(C1)-MONTH(C1)+(D1=EOMONTH(D1,0))
=12*YEAR(D1)+MONTH(D1)-12*YEAR(C1)-MONTH(C1)+(DAY(D1+1)=1)
=MONTH(D1)+12*YEAR(D1)-MONTH(C1)-12*YEAR(C1)+IF(EOMONTH(D1,0)=D1,1,0)
=(MONTH(D1+1)+12*YEAR(D1+1))-(MONTH(C1)+12*YEAR(C1))
=IF(D1=EOMONTH(D1,0),1,0)+MONTH(D1)-MONTH(C1)+((YEAR(D1)-YEAR(C1))*12)
=IF(EOMONTH(D1,0)=D1,(MONTH(D1)-MONTH(C1)+1)+(YEAR(D1)-YEAR(C1))*12,MONTH(D1)-MONTH(C1)+(YEAR(D1)-YEAR(C1))*12)
=IF(D1=EOMONTH(D1,0),DATEDIF(EOMONTH(C1,-1),EOMONTH(D1,0),"m"),DATEDIF(EOMONTH(C1,-1),EOMONTH(D1,0),"m")-1)
=IF(D10))-(D1برخی از این فرمول ها کمی طولانی هستند، بنابراین اگر می خواهید از یکی استفاده کنید، باید با دقت تماشا کنید که همه آنها را دریافت کنید.اگر ترجیح می دهید از یک رویکرد ماکرو استفاده کنید، تابع تعریف شده توسط کاربر زیر ممکن است مورد توجه باشد:Function CountMonthEnds(sd As Date, ed As Date) As Integer
Dim ceom As Integer
Dim cmonth As Integer
Dim lmonth As Integer
Dim x As Date
cmonth = 0
ceom = 0
cmonth = Month(sd)
lmonth = cmonth
go to end date + 1 to allow for end date being end of month
For x = sd To ed + 1
cmonth = Month(x)
If cmonth <> lmonth Then
ceom = ceom + 1
lmonth = cmonth
End If
Next x
CountMonthEnds = ceom
End Function
ماکرو به سادگی تمام تاریخ های بین تاریخ های آغاز و پایان را طی می کند. برای هر یک از تاریخ ها به ماه نگاه می کند، و اگر تغییر کند، آن را به عنوان "پایان ماه" حساب می کند. این تعداد توسط تابع برگردانده می شود.