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

کریستین به روشی برای محاسبه اولین سه شنبه هر ماه نیاز دارد. بنابراین، با توجه به یک ماه و یک سال، او باید تاریخ اولین سه شنبه را دریافت کند.

چندین فرمول مختلف وجود دارد که می توانید برای رسیدن به نتیجه دلخواه از آنها استفاده کنید. اکثر رویکردها به نوعی از تابع WEEKDAY استفاده می کنند زیرا می تواند یک مقدار عددی نشان دهنده روز هفته برای هر تاریخ معینی را برگرداند. با فرض اینکه یک ماه را در سلول A1 (1 تا 12) و یک سال چهار رقمی را در سلول A2 قرار دهید، فرمول های زیر همگی تاریخ اولین سه شنبه ماه را نشان می دهند. (من فرمول ها را به ترتیب طول، از طولانی ترین به کوتاه ترین مرتب کرده ام.)

=DATE(A2,A1,1)+IF(WEEKDAY(DATE(A2,A1,1))=3,0,IF(WEEKDAY(DATE(A2,A1,1))>3,7-WEEKDAY(DATE(A2,A1,1))+3,3-WEEKDAY(DATE(A2,A1,1))))
=IF(3-WEEKDAY(DATE(A2,A1,1))>=0,DATE(A2,A1,1)+3-WEEKDAY(DATE(A2,A1,1)),DATE(A2,A1,1)+7+3-WEEKDAY(DATE(A2,A1,1)))
=DATE(A2,A1,1)+IF(3-WEEKDAY(DATE(A2,A1,1))>=0,3-WEEKDAY(DATE(A2,A1,1)),10-WEEKDAY(DATE(A2,A1,1)))
=DATE(A2,A1,1)-WEEKDAY(DATE(A2,A1,1),1)+3+IF(WEEKDAY(DATE(A2,A1,1),1)>3,7,0)
=DATE(A2,A1,1)+8-DAY(DATE(A2,A1,1))-WEEKDAY(DATE(A2,A1,1)-DAY(DATE(A2,A1,1))-2)
=DATE(A2,A1,1)+3-WEEKDAY(DATE(A2,A1,1))+(1-(3>=WEEKDAY(DATE(A2,A1,1))))*7
=DATEVALUE(A2&"/"&A1&"/1")+MOD(10-WEEKDAY(DATEVALUE(A2&"/"&A1&"/1")),7)
=DATE(A2,A1,MATCH(TRUE,WEEKDAY(DATE(A2,A1,{1,2,3,4,5,6,7}))=3,0))
=DATE(A2,A1,MOD(10-WEEKDAY(DATE(A2,A1,1)),7)+1)
=DATE(A2,A1,1)+MOD(3-WEEKDAY(DATE(A2,A1,1)),7)
=DATE(A2,A1,1)+7-WEEKDAY(DATE(A2,A1,1),13)
=DATE(A2,A1,8-WEEKDAY(DATE(A2,A1,1),13))
=DATE(A2,A1,7)-MOD(DATE(A2,A1,7)-3,7)
=DATE(A2,A1,8-WEEKDAY(DATE(A2,A1,5)))
=DATE(A2,A1,8)-WEEKDAY(DATE(A2,A1,5))

اگر تعیین تاریخی را در ماه مورد نظر برای ارزیابی راحت تر می دانید، می توانید فرمول ها را برای در نظر گرفتن آن تغییر دهید. در زیر فقط چند فرمول است که اگر تاریخ واقعی را در سلول A1 قرار دهید می توانید از آنها استفاده کنید:

=DATE(YEAR(A1),MONTH(A1),MATCH(TRUE,WEEKDAY(DATE(YEAR(A1),MONTH(A1),{1,2,3,4,5,6,7}))=3,0))
=DATE(YEAR(A1),MONTH(A1),MOD(10-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1)),7)+1)
=DATE(YEAR(A1),MONTH(A1),1)+MOD(3-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1)),7)
=DATE(YEAR(A1),MONTH(A1),1)+7-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1),13)
=DATE(YEAR(A1),MONTH(A1),8-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1),13))
=DATE(YEAR(A1),MONTH(A1),7)-MOD(DATE(YEAR(A1),MONTH(A1),7)-3,7)
=DATE(YEAR(A1),MONTH(A1),8-WEEKDAY(DATE(YEAR(A1),MONTH(A1),5)))
=DATE(YEAR(A1),MONTH(A1),8)-WEEKDAY(DATE(YEAR(A1),MONTH(A1),5))
=A1-DAY(A1)+7-WEEKDAY(A1-DAY(A1)-1,3)

در نهایت، ممکن است بخواهید یک رویکرد مبتنی بر کلان را در نظر بگیرید. زیر یک تابع تعریف شده توسط کاربر است که به سرعت اولین سه شنبه را مشخص می کند:

Function FirstTuesday(M As Integer, Y As Integer) As Date
    Dim dResult As Date

    dResult = DateSerial(Y, M, 1)
    Do While Weekday(dResult) <> vbTuesday
        dResult = DateAdd("d", 1, dResult)
    Loop
    FirstTuesday = dResult
End Function

تنها کاری که باید در کاربرگ خود انجام دهید این است که تابع تعریف شده توسط کاربر را ماه و سال عددی مورد نظر ارسال کنید:

=FirstTuesday(6,2018)

اگر ترجیح می دهید، می توانید مشخص کنید که ماه و سال در یک سلول هستند:

=FirstTuesday(A2,A1)
اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

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

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

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

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

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

23.2k سوال

8.5k پاسخ

608 دیدگاه

9.7k کاربر

92 نفر آنلاین
0 عضو و 92 مهمان در سایت حاضرند
بازدید امروز: 6075
بازدید دیروز: 14408
بازدید کل: 15454995
...