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

Зачем считать рабочие дни в Excel и какие ошибки допускают чаще всего

Расчёт рабочих дней в Microsoft Excel — задача, с которой сталкиваются бухгалтеры, HR-специалисты, логисты и менеджеры проектов. Казалось бы, что может быть проще: вычесть выходные и праздники из общего количества дней? Но на практике даже опытные пользователи допускают ошибки: забывают про перенос праздников, не учитывают региональные особенности или используют неэффективные формулы, которые «ломаются» при изменении данных.

Самая распространённая проблема — игнорирование динамических праздников (например, Пасхи или переносимых выходных). Многие просто вручную вычитают фиксированные даты из календаря, но такой подход требует ежегодной корректировки. Другая типичная ошибка — использование функции ДЕНЬНЕД без учёта того, что в разных странах рабочая неделя может начинаться не с понедельника. Например, в Израиле выходные — пятница и суббота, а в ОАЭ — пятница и воскресенье.

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

  • 📅 Использовать встроенные функции ЧИСТРАБДНИ и РАБДЕНЬ для стандартных расчётов;
  • 🔄 Учитывать переносимые праздники и региональные особенности;
  • 📊 Строить динамические таблицы, которые автоматически обновляют количество рабочих дней;
  • ⚡ Оптимизировать формулы для больших диапазонов дат (10+ лет).
📊 Как часто вам нужно считать рабочие дни в Excel?
Ежедневно
Раз в неделю
Раз в месяц
Реже
Никогда

Способ 1: Базовая формула ЧИСТРАБДНИ для стандартного графика

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

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

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

=ЧИСТРАБДНИ("01.01.2026"; "31.12.2026")

Результат: 260 рабочих дней (при стандартной 5-дневной неделе).

Если нужно исключить праздники, укажите их в третьем аргументе как диапазон ячеек. Например, создайте список праздников в столбце A2:A10 и модифицируйте формулу:

=ЧИСТРАБДНИ("01.01.2026"; "31.12.2026"; A2:A10)

Форматируйте даты как "ДД.ММ.ГГГГ"|Проверьте, что праздники указаны в отдельном столбце|Используйте абсолютные ссылки для диапазона праздников (например, $A$2:$A$10)|Убедитесь, что в списке праздников нет дубликатов-->

⚠️ Внимание: Функция ЧИСТРАБДНИ не учитывает переносимые выходные (например, если выходной перенесён с субботы на понедельник). Для таких случаев потребуется ручная корректировка или использование VBA.
Формула Пример Результат Комментарий
=ЧИСТРАБДНИ("01.01.2026"; "31.01.2026") Январь 2026 23 Без учёта Нового года и Рождества
=ЧИСТРАБДНИ("01.05.2026"; "10.05.2026"; A2:A3) Майские праздники 4 В A2:A3 указаны 1 и 9 мая
=ЧИСТРАБДНИ(СЕГОДНЯ(); СЕГОДНЯ()+30) Следующие 30 дней 21 или 22 Зависит от текущей даты

Способ 2: Учёт праздников и переносимых выходных

Для точного расчёта с учётом официальных праздников и переносимых выходных (актуально для России, Украины, Беларуси и других стран СНГ) потребуется:

  1. Создать список всех праздников на год, включая перенесённые даты (например, если 8 марта выпадает на субботу, выходной переносится на понедельник).
  2. Добавить в этот список дополнительные нерабочие дни (например, «длинные» майские или новогодние каникулы).
  3. Использовать функцию ЧИСТРАБДНИ.МЕЖД (англ. NETWORKDAYS.INTL) для нестандартных выходных.

Пример для России (2026 год):

  • 📌 Новый год: 1–8 января (8 дней);
  • 📌 23 февраля: перенесён на 25 февраля (понедельник);
  • 📌 8 марта: выпадает на пятницу, выходной — 10 марта (понедельник).

Формула с учётом переносимых праздников:

=ЧИСТРАБДНИ.МЕЖД("01.01.2026"; "31.12.2026"; 11; A2:A20)

Где 11 — код для выходных «суббота-воскресенье», а A2:A20 — диапазон с праздниками.

Как узнать код для нестандартных выходных?

Код выходных дней в функции ЧИСТРАБДНИ.МЕЖД формируется как сумма чисел:

- 1 = суббота и воскресенье (стандарт)

- 2 = воскресенье и понедельник

- 11 = только воскресенье

- 12 = понедельник и вторник

- 13 = вторник и среда

и т.д. до 17 (пятница и суббота).

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

Способ 3: Динамический расчёт с учётом текущей даты

Если вам нужно автоматически обновлять количество рабочих дней от сегодняшнего дня до конца месяца или квартала, используйте комбинацию функций СЕГОДНЯ, КОНМЕСЯЦА и ЧИСТРАБДНИ.

Пример 1: Рабочие дни до конца текущего месяца:

=ЧИСТРАБДНИ(СЕГОДНЯ(); КОНМЕСЯЦА(СЕГОДНЯ(); 0); Праздники!A:A)

Пример 2: Рабочие дни до конца квартала (с учётом того, что квартал заканчивается 31 марта, 30 июня и т.д.):

=ЧИСТРАБДНИ(СЕГОДНЯ(); ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(СЕГОДНЯ())+3-ОСТАТ(МЕСЯЦ(СЕГОДНЯ()); 3); 1)-1; Праздники!A:A)

Для удобства создайте именованный диапазон для праздников:

  1. Выделите столбец с датами праздников.
  2. Перейдите на вкладку Формулы → Присвоить имя.
  3. Введите имя (например, Праздники_2026) и нажмите OK.

Теперь формулу можно упростить:

=ЧИСТРАБДНИ(СЕГОДНЯ(); КОНМЕСЯЦА(СЕГОДНЯ(); 0); Праздники_2026)

Способ 4: Расчёт рабочих дней между двумя датами с учётом сменного графика

Если ваша организация работает по сменному графику (например, 2 через 2, сутки через трое), стандартные функции Excel не подойдут. В этом случае потребуется:

  1. Создать таблицу с графиком работы (например, в отдельном листе).
  2. Использовать функцию СУММПРОИЗВ для подсчёта рабочих дней.

Пример: Допустим, у вас график «день-ночь-отдых-отдых». Создайте таблицу с датами и пометками «Д» (день), «Н» (ночь), «В» (выходной). Затем используйте формулу:

=СУММПРОИЗВ(--(ДиапазонДат>=A2); --(ДиапазонДат<=B2); --(График="Д")) + СУММПРОИЗВ(--(ДиапазонДат>=A2); --(ДиапазонДат<=B2); --(График="Н"))

Где A2 — дата начала периода, B2 — дата конца, ДиапазонДат — столбец с датами, График — столбец с обозначениями смен.

Для автоматизации можно написать пользовательскую функцию на VBA, которая будет учитывать любой график. Пример кода:

Function РабочиеДниСменный(НачДата As Date, КонДата As Date, График As Range) As Long

Dim д As Date, Результат As Long

Результат = 0

For д = НачДата To КонДата

If Not IsError(Application.Match(д, График.Columns(1), 0)) Then

If График.Cells(Application.Match(д, График.Columns(1), 0), 2).Value <> "В" Then

Результат = Результат + 1

End If

End If

Next д

РабочиеДниСменный = Результат

End Function

⚠️ Внимание: При использовании VBA убедитесь, что в настройках безопасности Excel разрешено выполнение макросов (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Параметры макросов).

Способ 5: Визуализация рабочих дней с помощью условного форматирования

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

  1. Создайте таблицу с датами на месяц/квартал.
  2. Выделите диапазон с датами и перейдите на вкладку Главная → Условное форматирование → Создать правило.
  3. Выберите Использовать формулу для определения форматируемых ячеек.
  4. Введите формулу для выходных: =ИЛИ(ДЕНЬНЕД(A1;2)>5; ЧИСЛСТОЛБ(A1;Праздники!A:A)).
  5. Задайте красный цвет заполнения для выходных.

Для рабочих дней создайте второе правило с формулой:

=И(ДЕНЬНЕД(A1;2)<=5; НЕ(ЧИСЛСТОЛБ(A1;Праздники!A:A)))

и зелёным цветом заполнения.

Результат: Календарь с цветовой индикацией, где:

  • 🟢 Зелёный — рабочие дни;
  • 🔴 Красный — выходные и праздники;
  • 🟡 Жёлтый — укороченные дни (дополнительное правило).

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

Даже опытные пользователи Excel допускают ошибки при расчёте рабочих дней. Вот самые критичные из них, которые искажают результаты на 10–30%:

  1. Игнорирование формата дат: Если ячейки с датами отформатированы как текст, функции ЧИСТРАБДНИ вернут ошибку #ЗНАЧ!. Проверяйте формат с помощью Формат ячеек → Дата.
  2. Неучёт високосных лет: 29 февраля может сбить расчёты, если в списке праздников указано «28.02». Всегда используйте точные даты.
  3. Переносимые праздники: В России с 2021 года действует правило переноса выходных, если праздник выпадает на субботу или воскресенье. Обновляйте список праздников ежегодно!
  4. Ошибки в диапазонах: Если в формуле указан неверный диапазон праздников (например, A1:A10 вместо A1:A15), часть праздников не будет учтена.

Чтобы проверить корректность расчётов, сравните результат Excel с официальным производственным календарём вашей страны. Например, для России его публикует Минтруд:

⚠️ Внимание: Если вы работаете с данными за несколько лет, учитывайте изменения в трудовом законодательстве. Например, в 2020 году в России были дополнительные выходные из-за пандемии, а в 2023 — перенос выходных на майские праздники.

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

Как посчитать рабочие дни между двумя датами, если выходные — пятница и суббота?

Используйте функцию ЧИСТРАБДНИ.МЕЖД с параметром 7 (пятница-суббота):

=ЧИСТРАБДНИ.МЕЖД("01.01.2026"; "31.01.2026"; 7; Праздники)

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

Можно ли посчитать рабочие часы, а не дни?

Да, для этого:

  1. Посчитайте количество рабочих дней (например, с помощью ЧИСТРАБДНИ).
  2. Умножьте результат на количество рабочих часов в день (например, 8): =ЧИСТРАБДНИ(A1;B1)*8.

Для учёта переработок или укороченных дней потребуется более сложная формула или VBA.

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

Создайте отдельный лист с праздниками и используйте Power Query для импорта данных с официальных источников:

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

Теперь список праздников будет обновляться при нажатии Данные → Обновить все.

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

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

  • 🔹 Функция введена с опечаткой (например, ЧИСТРАБДН вместо ЧИСТРАБДНИ);
  • 🔹 Используется англоязычная версия Excel, но функция введена на русском (или наоборот);
  • 🔹 В настройках региональных параметров Excel указан неподдерживаемый язык.

Решение: проверьте синтаксис функции или переключитесь на английскую версию (NETWORKDAYS).

Как посчитать рабочие дни в Google Sheets?

В Google Таблицах используйте те же функции, но с английским синтаксисом:

  • =NETWORKDAYS("01/01/2026", "12/31/2026", B2:B10) — аналог ЧИСТРАБДНИ;
  • =NETWORKDAYS.INTL("01/01/2026", "12/31/2026", 1, B2:B10) — аналог ЧИСТРАБДНИ.МЕЖД.

Формат дат должен соответствовать региональным настройкам таблицы.