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

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

Вы когда-нибудь сталкивались с ситуацией, когда нужно рассчитать срок выполнения проекта, но календарные дни и реальные рабочие дни расходятся на неделю? Типичная ошибка новичков — использовать простую разницу между датами (=B2-A2), забывая, что выходные и праздники не учитываются. В результате получаем завышенные сроки, срывы дедлайнов и недовольство клиентов.

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

Особенно актуальна эта тема для:

  • 📅 Менеджеров проектов, рассчитывающих сроки выполнения задач
  • 💼 HR-специалистов, планирующих отпуска и больничные
  • 📊 Финансистов, считающих дни просрочки по договорам
  • 🏭 Логистов, оптимизирующих сроки доставки
📊 Для чего вам нужно считать рабочие дни в Excel?
Планирование проектов
Расчёт зарплаты/отпусков
Логистика и доставка
Финансовые расчёты
Другое

Базовая функция РАБДЕНЬ(): как исключить выходные

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

  • 📌 Нач_дата — начальная дата в формате Excel (например, "10.05.2026" или ссылка на ячейку)
  • 📌 Кол_дней — количество рабочих дней, которые нужно прибавить (может быть отрицательным для вычитания)
  • 📌 [Выходные] — необязательный параметр для указания нестандартных выходных (по умолчанию "1" — суббота/воскресенье)

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

=РАБДЕНЬ("10.05.2026"; 15)

Результат — 31.05.2026 (учитываются только будни). Но что, если в вашей компании выходной не воскресенье, а пятница? Тогда третий параметр спасёт ситуацию:

=РАБДЕНЬ("10.05.2026"; 10; 7)

Здесь "7" кодирует выходной день как пятницу (1=суббота, 2=воскресенье, 3=понедельник и т.д.; сумма даёт 7 для пятницы).

Учёт праздников: функция ЧИСТРАБДНИ() и её секреты

Главный недостаток РАБДЕНЬ() — игнорирование государственных праздников. Для точных расчётов в России используйте ЧИСТРАБДНИ(нач_дата; кон_дата; [праздники]). Она возвращает количество рабочих дней между двумя датами с учётом выходных и праздников.

Синтаксис:

  • 📅 нач_дата и кон_дата — начальная и конечная даты периода
  • 🎉 [праздники] — необязательный диапазон ячеек с датами праздников (например, A2:A10)

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

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

Где в ячейках B2:B5 перечислены праздники: 1 мая, 9 мая, 10 мая (перенос с 8 марта), 11 мая (перенос с 7 января). Результат — 21 рабочий день вместо 23 без учёта праздников.

Как автоматически загрузить праздники в Excel?

Используйте Power Query для импорта официального производственного календаря с сайта Правительства РФ. Инструкция: Данные → Получить данные → Из других источников → Из веб, затем вставьте URL календаря (например, для 2026 года: ссылка).

Критичный нюанс: если праздничный день выпадает на выходной, Excel по умолчанию не переносит его. Чтобы учесть переносы (как в российском законодательстве), придётся вручную добавлять перенесённые даты в список праздников или использовать VBA.

⚠️ Внимание: Функция ЧИСТРАБДНИ() доступна только в Excel 2010 и новее. В старых версиях используйте комбинацию РАБДЕНЬ() с ручным вычитанием праздников.

Динамический календарь рабочих дней: шаг за шагом

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

  1. Создайте столбец с датами на год вперёд (используйте =ДАТА(2026;1;1) + автозаполнение).
  2. Добавьте столбец с формулой проверки выходных:
    =ЕСЛИ(ИЛИ(ДЕНЬНЕД(B2;2)>5; СЧЁТЕСЛИ($D$2:$D$10;B2));"Выходной";"Рабочий")

    где D2:D10 — диапазон с праздниками.

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

Пример структуры таблицы:

ДатаТип дняКомментарий
01.05.2026ПраздникДень Весны и Труда
02.05.2026ВыходнойПеренос с 4 января
03.05.2026Рабочий
09.05.2026ПраздникДень Победы
10.05.2026ВыходнойПеренос с 8 марта

Заполнить столбец дат на нужный период|Добавить столбец с типом дня (рабочий/выходной)|Указать праздники в отдельном диапазоне|Применить условное форматирование|Проверить корректность переносов праздников-->

Для автоматизации обновления праздников используйте Power Query или VBA-макрос, который будет подтягивать данные с официальных источников. Это избавит от ручного ввода при смене года.

Расчёт рабочих часов и неполных дней

Часто требуется учитывать не только дни, но и часы. Например, если задача началась в 14:00 в пятницу, то рабочее время до конца дня — 2 часа (при 8-часовом дне). Для таких случаев комбинируйте функции:

=ЕСЛИ(

ДЕНЬНЕД(A2;2)<6;

ЕСЛИ(

ВРЕМЯЗНАЧ(A2)>ВРЕМЯ(17;0;0);

0;

МАКС(0; (ВРЕМЯ(17;0;0)-ВРЕМЯЗНАЧ(A2))*24)

);

0

)

Где:

  • 🕒 A2 — ячейка с датой и временем начала задачи
  • 🕔 ВРЕМЯ(17;0;0) — время окончания рабочего дня (17:00)
  • ⏱️ Результат — количество оставшихся рабочих часов в день начала

Для расчёта общего времени выполнения задачи с учётом часов используйте:

=РАБДЕНЬ(А2; Б2) + (В2/24)

где Б2 — количество полных рабочих дней, а В2 — дополнительные часы.

⚠️ Внимание: При работе с временем убедитесь, что ячейки имеют формат [ч]:мм (настраивается через Формат ячеек → Время → 37:30:55). Иначе Excel обрежет часы свыше 24.

Продвинутые сценарии: переносы праздников и региональные особенности

В России праздничные дни часто переносятся, если выпадают на выходные. Например, если Новый год (1 января) — воскресенье, то выходной переносится на понедельник, 2 января. Excel не умеет это делать автоматически, поэтому придётся использовать один из трёх методов:

  1. Ручной ввод переносов — самый надёжный, но трудоёмкий способ. Ежегодно обновляйте список праздников согласно постановлению Правительства.
  2. VBA-скрипт — автоматизирует загрузку переносов с официальных сайтов. Пример кода:
    Пример VBA для загрузки праздников

    Sub LoadHolidays()
    

    Dim ws As Worksheet

    Set ws = ThisWorkbook.Sheets("Календарь")

    ' Здесь код для парсинга официального сайта или API

    ' Например, загрузка с government.ru через XMLHTTP

    End Sub

  3. Power Query — импорт данных из открытых источников (например, Google Calendar с праздничными датами).

Для международных компаний учитывайте региональные особенности. Например, в ОАЭ выходные — пятница и суббота, а в Израиле — суббота. Используйте третий параметр в РАБДЕНЬ():

  • 🇦🇪 ОАЭ: =РАБДЕНЬ(A2; 10; "0000011") (выходные — пятница и суббота)
  • 🇮🇱 Израиль: =РАБДЕНЬ(A2; 10; "0100001") (выходной — суббота)

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

Даже опытные пользователи допускают ошибки при работе с рабочими днями. Вот топ-5 проблем и их решения:

ОшибкаПричинаРешение
Функция возвращает #ИМЯ? Опечатка в названии функции (например, "РАБДНИ" вместо "РАБДЕНЬ") Проверьте синтаксис. В русскоязычном Excel используйте РАБДЕНЬ(), в англоязычном — WORKDAY()
Не учитываются праздники Не указан диапазон с праздничными датами в ЧИСТРАБДНИ() Добавьте третий параметр: =ЧИСТРАБДНИ(A2; B2; D2:D10)
Некорректные переносы выходных Excel не знает о переносах праздников (например, с субботы на понедельник) Вручную добавьте перенесённые дни в список праздников
Ошибка #ЗНАЧ! при вычитании дней Отрицательное количество дней задано некорректно Используйте абсолютные значения: =РАБДЕНЬ(A2; -10) для вычитания 10 дней
Неверный формат даты Дата введена как текст (например, "01.05.2026" без преобразования) Используйте =ДАТАЗНАЧ("01.05.2026") или форматируйте ячейку как дату

Критическая ошибка: игнорирование переходов на зимнее/летнее время при расчёте рабочих часов. Если в вашем регионе есть перевод часов, используйте функцию ВРЕМЯ() с поправкой на временную зону.

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

Как посчитать рабочие дни между двумя датами без учёта праздников?

Используйте комбинацию функций:

=РАБДЕНЬ(А2; Б2-1) - А2

где А2 — начальная дата, Б2 — конечная дата. Формула вернёт количество рабочих дней между ними.

Можно ли в Excel учесть сокращённые предпраздничные дни?

Стандартных функций для этого нет, но можно создать пользовательскую функцию на VBA:

Function ShortDays(start_date As Date, end_date As Date) As Integer

' Логика проверки предпраздничных дней

' Например, если день перед праздником — вычитаем 1 час

End Function

Или вручную корректировать рабочие часы в динамическом календаре.

Как посчитать рабочие дни в Google Таблицах?

В Google Sheets используйте аналогичные функции:

  • =WORKDAY(A2; 10) — аналог РАБДЕНЬ()
  • =NETWORKDAYS(A2; B2; D2:D10) — аналог ЧИСТРАБДНИ()

Синтаксис идентичен Excel, но названия функций на английском.

Почему функция ЧИСТРАБДНИ() считает неправильно?

Чаще всего проблема в:

  1. Неверном формате дат (проверьте, что ячейки отформатированы как даты).
  2. Отсутствии диапазона с праздничными датами (третий параметр обязателен для России).
  3. Опечатках в датах (например, "31.02.2026" — несуществующая дата).

Используйте =ЕОШИБКА(ЧИСТРАБДНИ(...)) для проверки ошибок.

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

Настройте Power Query для импорта данных с официального сайта Правительства РФ:

  1. Перейдите на Данные → Получить данные → Из других источников → Из веб.
  2. Вставьте URL производственного календаря (например, для 2026 года).
  3. Преобразуйте данные в таблицу и загрузите в Excel.
  4. Создайте связь с вашим календарём рабочих дней.

Обновляйте данные раз в год (или при изменении постановления).