تا به حال به این فکر کرده اید که چند روز هفته خاص در یک ماه مشخص اتفاق می افتد؟ برای برخی افراد مهم است که بدانند در ماه چند سه شنبه وجود دارد. و چه کسی نمی خواهد بداند که آیا یک ماه خاص چهار یا پنج شنبه خواهد داشت؟
اکسل شامل یک تابع ذاتی نیست که بتوانید از آن برای تعیین تعداد دفعاتی که یک روز هفته خاص در یک ماه خاص رخ می دهد استفاده کنید. با این حال، می توانید فرمول ها و توابع خود را برای انجام کار ایجاد کنید.
ابتدا فرمول زیر را در نظر بگیرید.
=4+N((WEEKDAY(DATE(YEAR($A$1),MONTH($A$1),1)))+
(DAY(DATE(YEAR($A$1),MONTH($A$1)+1,0))-28)>(7*((
WEEKDAY(DATE(YEAR($A$1),MONTH($A$1),1)))>(1+ROW()-
ROW($A$2)))+(1+ROW()-ROW($A$2))))
فرمول متکی بر تاریخ در A1 است. این تاریخ باید از ماهی باشد که میخواهید «تست» شود. فرمول قرار است در یک سلول در ردیف 2 کپی شود و سپس در شش سلول مستقیماً زیر آن کپی شود. برای مثال، میتوانید این فرمول را در محدوده سلولهای B2:B8 کپی کنید. پاسخ اول (B2) تعداد یکشنبه های ماه است، پاسخ دوم (B3) تعداد دوشنبه ها و غیره است.
اشکال این فرمول این است که از موقعیت سلول حاوی فرمول به عنوان بخشی از فرمول استفاده می کند. این به این معنی است که فرمول باید در ابتدای ردیف دوم قرار گیرد.
اشکال دیگر این است که فرمول بسیار طولانی و پیچیده است. اگر فرمول کوتاهتری میخواهید، باید به فرمول آرایه بروید. یک فرمول مفیدی که می توانید استفاده کنید، فرض می کند که سه آرگومان ارائه می کنید: سال (سلول C2)، ماه (سلول D2)، و یک روز هفته (سلول E2). با این سه مورد، فرمول زیر عالی عمل می کند:
=SUM(IF(WEEKDAY(DATE(C2, D2, ROW(INDIRECT("1:" &
DAY(DATE(C2, D2+1, 0))))))=E2, 1, 0))
به یاد داشته باشید که این یک فرمول آرایه است، به این معنی که باید با فشار دادن Shift+Ctrl+Enter آن را وارد کنید . علاوه بر این، مقدار روز هفته ای که در سلول E2 وارد می کنید باید در محدوده 1 تا 7 باشد، جایی که 1 یکشنبه، 2 دوشنبه و غیره است.
فرمول عالی دیگری که می توانید استفاده کنید موارد زیر است:
=NETWORKDAYS.INTL(DATE(YEAR(A1),MONTH(A1),1),EOMONTH(A1,0),
REPT("1",B1-1) & "0" & REPT("1",7-B1))
این فرمول تعمیم یافته تنها به دو مقدار نیاز دارد تا به درستی کار کند. اولی تاریخی است که در ماه است که می خواهید تجزیه و تحلیل کنید. این به سلول A1 می رود. در سلول B1 باید نشانگر روزهای هفته را که می خواهید شمارش کنید قرار دهید. این مقدار با فرمول قبلی متفاوت است - در حالی که هنوز باید در محدوده 1 تا 7 باشد، 1 دوشنبه، 2 سه شنبه و غیره است.
اگر طراحی کاربرگ شما به شما اجازه نمی دهد سال، ماه و روز هفته را در سلول های مختلف وارد کنید، یک راه حل تمیز ایجاد یک تابع تعریف شده توسط کاربر برای برگرداندن تعداد است. ماکرو زیر نمونه ای از این نوع توابع است.
Function MonthWeekDays(dDate As Date, iWeekDay As Integer)
Dim dLoop As Date
If iWeekDay < 1 Or iWeekDay > 7 Then
MonthWeekDays = CVErr(xlErrNum)
Exit Function
End If
MonthWeekDays = 0
dLoop = DateSerial(Year(dDate), Month(dDate), 1)
Do While Month(dLoop) = Month(dDate)
If WeekDay(dLoop) = iWeekDay Then _
MonthWeekDays = MonthWeekDays + 1
dLoop = dLoop + 1
Loop
End Function
شما از تابع با وارد کردن موارد زیر در یک سلول استفاده می کنید:
=MonthWeekDays(A1,4)
در این استفاده، اولین آرگومان (سلول A1) حاوی تاریخ در ماه مورد ارزیابی است. آرگومان دوم یک مقدار عددی است که نشان دهنده روز هفته است که می خواهید شمارش کنید. این مقدار باید در محدوده 1 تا 7 باشد که 1 یکشنبه، 2 دوشنبه و غیره است.