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

Зачем считать рабочие дни в Excel и какие подводные камни вас ждут

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

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

В этой статье мы разберём:

  • 📅 Базовые функции Excel для подсчёта рабочих дней (и почему они не всегда работают).
  • 🎉 Как добавить праздничные дни в расчёты — от ручного ввода до автоматизации.
  • 🔄 Сложные случаи: скользящие выходные, неполные рабочие дни, ночные смены.
  • 📊 Практические примеры для HR, бухгалтерии и проектного управления.

Базовые функции Excel для подсчёта рабочих дней

Начнём с азов. В Excel есть две ключевые функции для работы с рабочими днями:

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

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

=ЧИСТРАБДНИ("01.03.2026"; "31.03.2026")

Результат: 22 рабочих дня (март 2026 года включает 31 день, из них 9 выходных по стандартному графику пн-пт).

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

А что, если в марте есть государственные праздники? Например, 8 Марта (пятница) в России — выходной. Чтобы функция их учла, нужно передать диапазон с датами праздников в третий аргумент:

=ЧИСТРАБДНИ("01.03.2026"; "31.03.2026"; $A$2:$A$3)

Где в ячейках A2:A3 указаны даты праздников (например, 08.03.2026 и 09.03.2026, если выходной перенесён).

📊 Как часто вам нужно считать рабочие дни в Excel?
Ежедневно
Несколько раз в неделю
Раз в месяц
Редее
Никогда

Как добавить праздничные дни в расчёты: 3 способа

Праздники — главная головная боль при подсчёте рабочих дней. Их нужно учитывать вручную, и здесь есть несколько подходов:

1. Ручной ввод в отдельный диапазон

Самый простой, но трудоёмкий способ. Создайте на листе таблицу с датами праздников и ссылайтесь на неё в формуле:

ДатаНазвание праздника
01.01.2026Новый год
07.01.2026Рождество
23.02.2026День защитника Отечества
08.03.2026Международный женский день

Затем используйте этот диапазон в ЧИСТРАБДНИ:

=ЧИСТРАБДНИ("01.01.2026"; "31.01.2026"; Праздники!$A$2:$A$5)

2. Автоматическое заполнение праздников через Power Query

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

Как импортировать праздники через Power Query

1. Перейдите на вкладку ДанныеПолучить данныеИз других источниковИз веб.

2. Вставьте URL страницы с производственным календарём (например, с сайта КонсультантПлюс).

3. Преобразуйте данные в Power Query: удалите ненужные столбцы, оставьте только даты.

4. Загрузите данные на новый лист и используйте его как источник праздников в формулах.

3. Пользовательская функция VBA для динамического учёта праздников

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

Function CustomWorkdays(StartDate As Date, EndDate As Date) As Long

Dim Holidays, i As Long

Holidays = Array("01.01.2026", "07.01.2026", "23.02.2026") ' Добавьте свои даты

CustomWorkdays = 0

For i = StartDate To EndDate

If Weekday(i, vbMonday) < 6 And Not IsHoliday(i, Holidays) Then

CustomWorkdays = CustomWorkdays + 1

End If

Next i

End Function

Function IsHoliday(d As Date, Holidays) As Boolean

Dim i As Long

For i = LBound(Holidays) To UBound(Holidays)

If CDate(Holidays(i)) = d Then

IsHoliday = True

Exit Function

End If

Next i

IsHoliday = False

End Function

Эту функцию можно вызвать как обычно: =CustomWorkdays("01.03.2026"; "31.03.2026").

Сложные случаи: нестандартные графики работы

Что делать, если ваша компания работает по скользящему графику (например, 2 через 2) или имеет неполные рабочие дни (например, суббота — короткий день)? Стандартные функции Excel здесь бессильны, но есть обходные пути.

1. Сменный график (например, 2/2)

Для расчёта рабочих дней при графике "2 дня через 2" можно использовать комбинацию функций ЕСЛИ, ДЕНЬНЕД и ОСТАТ. Пример:

=СУММПРОИЗВ(

--(ДЕНЬНЕД(A2:A31;2)<6); ' Пн-Пт

--(ОСТАТ(СТРОКА(A2:A31)-СТРОКА(A$2);4)<2) ' Чередование 2/2

)

Где A2:A31 — диапазон с датами месяца.

2. Неполные рабочие дни (например, суббота — 4 часа)

Если суббота считается рабочим днём, но с сокращённым временем, используйте ЧИСТРАБДНИ с корректировкой:

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

СЧЁТЕСЛИМН(диапазон_дат; ">="&нач_дата; "<="&кон_дата; ДЕНЬНЕД(диапазон_дат;2); 6) * 0.5

Здесь субботы (ДЕНЬНЕД=6) учитываются как 0.5 рабочего дня.

⚠️ Внимание: При расчёте зарплаты или отпускных неполные дни могут требовать особого учёта в соответствии с Трудовым кодексом. Уточните правила в вашей организации!

Создать список всех праздников и переносов выходных|Проверить график работы компании (стандартный/сменный)|Определить, нужно ли учитывать неполные дни (например, предпраздничные)|Выбрать подходящую функцию Excel или VBA-решение|Протестировать формулу на небольшом периоде-->

Практические примеры для разных задач

Теория — это хорошо, но как применить её на практике? Разберём реальные кейсы.

1. Расчёт отработанных дней для зарплаты

HR-специалистам часто нужно посчитать, сколько дней сотрудник фактически отработал в месяце, учитывая:

  • 📅 Больничные и отпуска.
  • ✈️ Командировки (могут считаться как рабочие или нет).
  • 🎁 Дополнительные выходные (например, за переработку).

Формула для ячейки с датами отсутствия (например, в столбце B):

=ЧИСТРАБДНИ("01.03.2026"; "31.03.2026"; Праздники!$A$2:$A$10) -

СЧЁТЕСЛИМН(Отсутствия!$B$2:$B$100; ">="&"01.03.2026"; "<="&"31.03.2026")

2. Планирование проектов по методологии Agile

В Agile-командах часто используют спринты — фиксированные периоды работы (обычно 2 недели). Чтобы посчитать количество рабочих дней в спринте:

=ЧИСТРАБДНИ(Дата_начала_спринта; Дата_окончания_спринта; Праздники!Диапазон)

Пример для спринта с 4 по 17 марта 2026 года:

=ЧИСТРАБДНИ("04.03.2026"; "17.03.2026"; Праздники!$A$2:$A$3)

Результат: 10 рабочих дней (с учётом 8 Марта).

3. Анализ продаж по рабочим дням

Маркетологам важно сравнивать продажи в рабочие и выходные дни. Для этого можно использовать СУММЕСЛИМН с условием на рабочие дни:

=СУММЕСЛИМН(

Диапазон_продаж;

Диапазон_дат; ">="&нач_дата;

Диапазон_дат; "<="&кон_дата;

Диапазон_дат; "<>"&Праздники!$A$2:$A$10;

Диапазон_дат; ДЕНЬНЕД(Диапазон_дат;2); "<6"

)

Ошибки при расчёте рабочих дней и как их избежать

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

  1. Неучтённые праздники: Забыли добавить перенос выходных (например, если выходной с субботы перенесли на понедельник).
  2. Неверный формат дат: Excel может воспринимать даты как текст, если они введены вручную без разделителей (например, 01032026 вместо 01.03.2026).
  3. Ошибки в диапазонах: Ссылка на диапазон праздников абсолютная ($A$2:$A$10), но при копировании формулы она "съезжает".
  4. Несовпадение региональных настроек: В американской версии Excel первая неделя начинается с воскресенья (vbSunday), а в русской — с понедельника (vbMonday).

Как проверить формулу на ошибки?

  • 🔍 Используйте ВЫДЕЛИТЬ ГРУППУ ЯЧЕЕК (вкладка ГлавнаяНайти и выделить) для визуализации диапазонов.
  • 📌 Проверяйте формат ячеек: выделите диапазон с датами и посмотрите формат в меню ГлавнаяФорматФормат ячеек.
  • 🔄 Тестируйте формулу на небольшом периоде (например, 1 неделя) с известным результатом.
⚠️ Внимание: Если ваша формула возвращает #ЗНАЧ!, скорее всего, проблема в несовпадении форматов дат. Попробуйте привести даты к единому формату с помощью функции ДАТАЗНАЧ:
=ЧИСТРАБДНИ(ДАТАЗНАЧ("01.03.2026"); ДАТАЗНАЧ("31.03.2026"); Праздники!$A$2:$A$3)

Автоматизация: как создать универсальный шаблон для расчёта рабочих дней

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

  1. Лист "Календарь": Все даты года с пометками о выходных и праздниках (можно сгенерировать через Power Query).
  2. Лист "Праздники": Диапазон с датами праздников и переносов (обновляется раз в год).
  3. Лист "Расчёты": Готовые формулы для:
    • 📅 Подсчёта рабочих дней в месяце.
    • 📊 Анализа отработанного времени по сотрудникам.
    • 📈 Планирования проектов (с учётом буферных дней).
  • Макрос обновления: Кнопка для автоматического пересчёта всех формул и обновления праздников.
  • Пример структуры шаблона:

    ЛистСодержимоеПример формулы
    КалендарьСписок дат с 01.01.2026 по 31.12.2026=ДАТА(2026;1;1) + протянуть вниз
    ПраздникиДата и название праздника01.01.2026, Новый год
    РасчётыРабочие дни в марте 2026=ЧИСТРАБДНИ("01.03.2026"; "31.03.2026"; Праздники!$A$2:$A$10)

    Готовый шаблон можно сохранить как файл .xltx (шаблон Excel) и использовать его как основу для новых документов.

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

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

    Используйте функцию ЧИСТРАБДНИ.МЕЖД (или WORKDAY.INTL в английской версии), где можно задать пользовательские выходные:

    =ЧИСТРАБДНИ.МЕЖД("01.03.2026"; "31.03.2026"; 7; Праздники!$A$2:$A$10)

    Где 7 — код для выходных в пятницу и субботу (11 — для воскресенья и понедельника, 1 — для стандартных субботы-воскресенья).

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

    Да, с помощью Power Query или VBA. Например, можно парсить данные с сайта КонсультантПлюс (производственный календарь) или подключаться к API календарных сервисов (например, Google Calendar). Для этого потребуются навыки работы с Web-запросами или написания скриптов.

    Готовое решение: используйте надстройку "Производственный календарь РФ" для Excel (доступна на сайтах типа Excel-VBA.ru).

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

    Стандартные функции Excel не различают полные и сокращённые дни. Решения:

    1. Добавить предпраздничные дни в список праздников и учитывать их как 0.5 дня (см. пример выше).
    2. Создать отдельный столбец с коэффициентом (1 — полный день, 0.5 — сокращённый) и использовать СУММПРОИЗВ.
    Почему функция ЧИСТРАБДНИ возвращает ошибку #ИМЯ?

    Вероятные причины:

    • 🔹 Опечатка в названии функции (например, ЧИСЛОРАБДНЕЙ вместо ЧИСТРАБДНИ).
    • 🔹 Английская версия Excel: используйте NETWORKDAYS.
    • 🔹 Отсутствует надстройка "Пакет анализа" (в старых версиях Excel). Установите её через ФайлПараметрыНадстройки.

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

    В веб-версии Excel доступны те же функции: ЧИСТРАБДНИ и РАБДЕНЬ. Однако:

    • 🔸 Нет поддержки VBA (не получится использовать пользовательские функции).
    • 🔸 Power Query доступен, но с ограничениями (например, нельзя подключаться к некоторым внешним источникам).
    • 🔸 Для автоматизации праздников придётся вводить их вручную или копировать из десктопной версии.