Как посчитать рабочие дни в Excel: формулы с учётом выходных и праздников

Почему стандартный календарь не подходит для бизнес-расчётов

Вы когда-нибудь пробовали вручную пересчитывать дни между двумя датами, исключая субботы, воскресенья и государственные праздники? Это утомительно, ошибки неизбежны, а время тратится зря. Excel решает эту проблему за секунды — нужно только знать правильные формулы.

В бизнес-среде точный подсчёт рабочих дней критичен для планирования проектов, расчёта зарплат, логистики или сроков поставок. Например, если контракт предусматривает выполнение заказа за 10 рабочих дней, а вы ошибётесь в расчётах на 1-2 дня, это может обернуться штрафами или репутационными потерями. Даже в личных финансах — скажем, при расчёте процентов по вкладу — учёт только рабочих дней даёт более реалистичную картину.

К счастью, в Excel есть специализированные функции, которые автоматизируют этот процесс. Но не все знают, что их можно комбинировать, адаптировать под региональные праздники или даже создавать динамические календари. В этой статье разберём 5 способов подсчёта рабочих дней — от базового до продвинутого, включая обработку пользовательских праздников и исключений.

Способ 1: Базовая функция РАБДЕНЬ (WORKDAY)

Функция РАБДЕНЬ (или WORKDAY в английской версии) — это ваш первый помощник. Она автоматически исключает субботы и воскресенья, но не учитывает праздники. Синтаксис прост:

=РАБДЕНЬ(нач_дата; кол_дней; [праздники])

Где:

  • 📅 нач_дата — стартовая дата (например, "10.05.2026")
  • 🔢 кол_дней — количество рабочих дней, которое нужно добавить
  • 🎉 [праздники] — необязательный диапазон с датами праздников (если не указан, игнорируются)

Пример: чтобы узнать дату через 15 рабочих дней от 1 мая 2026 года (без учёта праздников), используйте:

=РАБДЕНЬ("01.05.2026"; 15)
⚠️ Внимание: Если вы укажете отрицательное число в кол_дней, функция вернёт дату в прошлом. Например, =РАБДЕНЬ("10.05.2026"; -5) покажет рабочий день за 5 дней до 10 мая.

Способ 2: Подсчёт рабочих дней между двумя датами (ЧИСТРАБДНИ)

Когда нужно узнать, сколько рабочих дней прошло между двумя датами (например, для расчёта оплаты по договору), используйте функцию ЧИСТРАБДНИ (NETWORKDAYS):

=ЧИСТРАБДНИ(нач_дата; кон_дата; [праздники])

Пример: количество рабочих дней с 1 по 31 мая 2026 года (без праздников):

=ЧИСТРАБДНИ("01.05.2026"; "31.05.2026")

А теперь сравните результаты с учётом праздников. Допустим, в мае 2026 года праздничными днями являются 1, 8 и 9 мая. Создайте диапазон с этими датами (например, в ячейках A1:A3) и укажите его в формуле:

=ЧИСТРАБДНИ("01.05.2026"; "31.05.2026"; A1:A3)
Формула Результат (май 2026) Пояснение
=ЧИСТРАБДНИ("01.05.2026"; "31.05.2026") 22 Без учёта праздников
=ЧИСТРАБДНИ("01.05.2026"; "31.05.2026"; A1:A3) 19 С учётом 1, 8 и 9 мая
=РАБДЕНЬ("01.05.2026"; 10) 15.05.2026 10-й рабочий день после 1 мая (без праздников)
📊 Как часто вам нужно считать рабочие дни в Excel?
Ежедневно
Несколько раз в неделю
Раз в месяц
Редее

Способ 3: Учёт региональных праздников и исключений

Стандартные функции не знают о местных праздниках (например, День города или религиозные даты). Чтобы их учесть, создайте отдельный список праздников в таблице и ссылайтесь на него в формулах.

Пример структуры:

  • 📌 Ячейка B1:B5 — даты праздников (например, "01.05.2026", "08.05.2026")
  • 📌 Ячейка B6 — формула =ЧИСТРАБДНИ(A1; A2; B1:B5), где A1 и A2 — начальная и конечная даты

Если праздники повторяются ежегодно (например, 8 Марта), используйте функцию ДАТА для автоматического обновления:

=ДАТА(ГОД(СЕГОДНЯ()); 3; 8)

Эта формула всегда будет возвращать 8 марта текущего года.

Как учесть перенос выходных?

В России выходные иногда переносят (например, если праздник выпадает на субботу). Чтобы это отразить, добавьте в список праздников даты перенесённых выходных (например, "10.05.2026" как дополнительный выходной после 9 мая).

⚠️ Внимание: Если в вашем регионе рабочая неделя нестандартная (например, выходные в пятницу и субботу), функции РАБДЕНЬ и ЧИСТРАБДНИ не подойдут. В этом случае используйте РАБДЕНЬ.МЕЖД (о нём — в следующем разделе).

Способ 4: Нестандартные выходные (РАБДЕНЬ.МЕЖД)

Функция РАБДЕНЬ.МЕЖД (WORKDAY.INTL) позволяет задать собственные выходные дни. Например, если у вас рабочая неделя с воскресенья по четверг, а выходные — пятница и суббота.

Синтаксис:

=РАБДЕНЬ.МЕЖД(нач_дата; кол_дней; [выходные]; [праздники])

Параметр [выходные] задаётся числом или строкой:

  • 🔟 1 или "0000011" — выходные суббота и воскресенье (стандарт)
  • 🔟 11 или "0000001" — выходной только воскресенье
  • 🔟 "0000110" — выходные пятница и суббота

Пример: расчёт даты через 10 рабочих дней с выходными в пятницу и субботу:

=РАБДЕНЬ.МЕЖД("01.05.2026"; 10; "0000110")

Создать список праздников в отдельном диапазоне|Определить код выходных (например, "0000110" для пятницы-субботы)|Проверить формат дат (должен быть одинаковым)|Использовать абсолютные ссылки на диапазон праздников (например, $A$1:$A$10)-->

Способ 5: Динамический календарь рабочих дней

Если вам нужно визуализировать рабочие и выходные дни (например, для графика дежурств), создайте динамический календарь:

  1. В столбце A перечислите даты на месяц вперёд (используйте автозаполнение).
  2. В столбце B добавьте формулу для проверки дня недели:
    =ЕСЛИ(ИЛИ(ДЕНЬНЕД(A1;2)>5; ЧИСЛСТОЛБ(ПОИСКПОЗ(A1; Праздники;0))>0); "Выходной"; "Рабочий")

    где Праздники — именованный диапазон с датами.

  3. Примените условное форматирование, чтобы выделить выходные красным, а рабочие дни — зелёным.

Для автоматизации создайте выпадающий список с месяцами и используйте формулу ДАТА для генерации дат:

=ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(ДатаНачала); ДЕНЬ(ДатаНачала)+СТРОКА(A1)-1)

Типичные ошибки и как их избежать

Даже опытные пользователи Excel иногда допускают ошибки при работе с датами. Вот самые распространённые:

  • 🗓️ Неверный формат дат: Excel может воспринимать "01.05.2026" как текст, если ячейка отформатирована как общий тип. Всегда проверяйте формат через Формат ячеек → Дата.
  • 🔄 Перенос выходных: Забывают добавить перенесённые выходные в список праздников (например, 10 мая 2026 года в России).
  • 📊 Ошибка #ЗНАЧ!: Возникает, если диапазон праздников содержит пустые ячейки или текст вместо дат.
  • 🔙 Отрицательное количество дней: Функции РАБДЕНЬ и ЧИСТРАБДНИ корректно обрабатывают отрицательные значения, но результат может сбить с толку (например, =РАБДЕНЬ("10.05.2026"; -3) вернёт 7 мая, если 8-9 мая — выходные).

Чтобы избежать проблем, используйте проверку данных:

  1. Выделите диапазон с датами.
  2. Перейдите в Данные → Проверка данных.
  3. Установите тип Даты и ограничение (например, "больше чем 01.01.2026").

⚠️ Внимание: Если вы копируете формулы с рабочими днями в другую книгу, не забудьте скорректировать ссылки на диапазоны праздников. Используйте абсолютные ссылки (например, $A$1:$A$10) или именованные диапазоны.

FAQ: Ответы на частые вопросы

Можно ли посчитать рабочие дни без учёта субботы, но с учётом воскресенья как рабочего дня?

Да, используйте функцию РАБДЕНЬ.МЕЖД с параметром [выходные]="0000001". Это указывает, что выходной только воскресенье (1), а остальные дни — рабочие (0). Пример:

=РАБДЕНЬ.МЕЖД("01.05.2026"; 5; "0000001")

Формула вернёт дату через 5 рабочих дней, где суббота тоже рабочий день.

Как посчитать рабочие часы, а не дни?

Для рабочих часов умножьте количество рабочих дней на длительность рабочего дня. Например, если рабочий день — 8 часов:

=ЧИСТРАБДНИ(A1; A2) * 8

Чтобы учесть перерывы, вычтите их из результата (например, =ЧИСТРАБДНИ(A1; A2) * 7 для 7-часового рабочего дня с часовым перерывом).

Почему функция ЧИСТРАБДНИ возвращает ошибку #ИМЯ?

Ошибка #ИМЯ! появляется, если:

  • Вы используете английскую версию Excel, но вводите русское название функции (например, ЧИСТРАБДНИ вместо NETWORKDAYS).
  • В формуле есть опечатка (например, ЧИСЛРАБДНИ вместо ЧИСТРАБДНИ).
  • Диапазон праздников указан неверно (например, A1:A5 вместо $A$1:$A$5).

Проверьте язык интерфейса Excel и синтаксис функции.

Как автоматически обновлять список праздников каждый год?

Создайте таблицу с фиксированными датами (например, 1 января) и динамическими (например, Пасха). Для динамических дат используйте формулы:

  • 🐣 Пасха (по григорианскому календарю):
    =ДАТА(ГОД(СЕГОДНЯ()); 3; 28+ОСТАТ(19*ОСТАТ(ГОД(СЕГОДНЯ());19)-1;30)*14%
  • 🎄 Рождество (25 декабря):
    =ДАТА(ГОД(СЕГОДНЯ()); 12; 25)

Обновляйте формулы раз в год или используйте макрос для автоматического пересчёта.

Можно ли посчитать рабочие дни в Google Sheets?

Да, в Google Таблицах есть аналогичные функции:

  • =WORKDAY(нач_дата; кол_дней; [праздники]) — аналог РАБДЕНЬ.
  • =NETWORKDAYS(нач_дата; кон_дата; [праздники]) — аналог ЧИСТРАБДНИ.
  • =WORKDAY.INTL(нач_дата; кол_дней; [выходные]; [праздники]) — аналог РАБДЕНЬ.МЕЖД.

Синтаксис и логика работы идентичны Excel.