ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
33 visibility
موضوع: آفیس توسط:

کیم یک کاربرگ دارد که در آن تاریخ شروع (ستون 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

ماکرو به سادگی تمام تاریخ های بین تاریخ های آغاز و پایان را طی می کند. برای هر یک از تاریخ ها به ماه نگاه می کند، و اگر تغییر کند، آن را به عنوان "پایان ماه" حساب می کند. این تعداد توسط تابع برگردانده می شود.

اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوال مشابهی یافت نشد

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما

23.2k سوال

8.5k پاسخ

613 دیدگاه

10.8k کاربر

191 نفر آنلاین
0 عضو و 191 مهمان در سایت حاضرند
بازدید امروز: 13353
بازدید دیروز: 13001
بازدید کل: 19467646
...