Рабочие дни месяца (Microsoft Excel)
Вы когда-нибудь задумывались, сколько дней в конкретный будний день приходится на месяц? Некоторым людям важно знать, сколько вторников в месяц. И кто не хочет знать, будет ли в конкретном месяце четыре или пять суббот?
В Excel нет встроенной функции, которую можно использовать для определения количества раз, когда определенный будний день встречается в течение данного месяца. Однако вы можете создавать свои собственные формулы и функции для выполнения этой задачи.
Сначала рассмотрим следующую формулу.
=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 — понедельник и т. Д.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (5684) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:
link: / excel-Weekdays_in_a_Month [дни недели в месяце]
.