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

Расчет рабочих дней в месяце — типичная задача для бухгалтеров, HR-специалистов и менеджеров проектов. В Microsoft Excel есть несколько встроенных функций, которые автоматизируют этот процесс, но не все знают, как их правильно применять. Ошибки в подсчете могут привести к неверным выплатам зарплаты, срыву сроков проектов или проблемам с отчетностью.

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

1. Базовый подсчет: функция РАБДЕНЬ() для стандартного графика

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

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

Чтобы посчитать количество рабочих дней между двумя датами (например, с 1 по 31 января 2026 года), используйте комбинацию с ДАТА():

=РАБДЕНЬ(ДАТА(2026;1;1); 30) - ДАТА(2026;1;1)

Эта формула вернет 22 рабочих дня для января 2026 года (при стандартном графике 5/2). Обратите внимание: третий аргумент [праздники] здесь не указан, поэтому праздничные дни (например, 1-8 января) будут посчитаны как рабочие!

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

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

  1. Создайте на листе список праздников (например, в ячейках D1:D10):
    01.01.2026
    

    02.01.2026

    ...

    08.01.2026

  2. Используйте формулу:
    =ЧИСТРАБДНИ(ДАТА(2026;1;1); ДАТА(2026;1;31); D1:D10)

Результат — 17 рабочих дней (с учетом новогодних каникул). Важно: формат дат в списке праздников должен совпадать с форматом ячеек в вашей таблице. Если Excel не распознает даты, используйте функцию ДАТАЗНАЧ() для преобразования текста в дату.

Как быстро создать список праздников?

Можно скопировать официальный производственный календарь с сайта правительства или использовать готовые шаблоны Excel. Например, на сайте КонсультантПлюс ежегодно публикуют актуальные даты праздников и переносов выходных.

3. Расчет для нестандартных графиков (сменная работа, 2/2)

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

  • 📅 Создать отдельную таблицу с графиком работы (например, в столбце А — даты, в столбце B — статус "рабочий/выходной")
  • 📊 Использовать функцию СЧЁТЕСЛИ() для подсчета рабочих дней:
    =СЧЁТЕСЛИ(B1:B31; "рабочий")
  • 🔄 Автоматизировать процесс с помощью ВПР() или ИНДЕКС/ПОИСКПОЗ для больших периодов

Пример таблицы для графика 2 через 2:

ДатаСтатусСмена
01.01.2026Выходной
02.01.2026Выходной
03.01.2026РабочийДень
04.01.2026РабочийНочь
05.01.2026Выходной
📊 Какой график работы в вашей компании?
Стандартный 5/2
Сменный 2/2
Гибкий график
Удаленная работа
Другой

4. Динамический расчет с учетом текущего месяца

Чтобы формула автоматически подстраивалась под текущий месяц, используйте комбинацию функций СЕГОДНЯ(), ДАТА() и ЧИСТРАБДНИ():

=ЧИСТРАБДНИ(

ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(СЕГОДНЯ()); 1);

КОНМЕСЯЦА(СЕГОДНЯ(); 0);

ДиапазонПраздников

)

Где ДиапазонПраздников — это адрес ячеек со списком праздников. Эта формула всегда будет показывать актуальное количество рабочих дней в текущем месяце. Для предыдущего или следующего месяца замените 0 в функции КОНМЕСЯЦА() на -1 или 1 соответственно.

Создать список праздников на отдельном листе|Проверить формат дат в списке|Назначить диапазону имя через "Формулы → Диспетчер имен"|Протестировать формулу на исторических данных-->

5. Продвинутые техники: массивы и Power Query

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

  • 🔢 Формулы массива: позволяют обрабатывать несколько условий одновременно. Пример:
    =СУММ(
    

    --(ДЕНЬНЕД(ДАТА(2026;1;СТРОКА(1:31));2)<6);

    --(СЧЁТЕСЛИ(Праздники;ДАТА(2026;1;СТРОКА(1:31)))=0)

    )

    Эта формула должна вводиться как массив (Ctrl+Shift+Enter в старых версиях Excel).
  • 📥 Power Query: импортируйте календарь из внешних источников (например, с сайта правительства) и автоматически обновляйте данные.

Критическая особенность: формулы массива могут значительно замедлять работу книги при больших объемах данных (более 10 000 строк). В таких случаях лучше использовать Power Query или VBA.

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

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

⚠️ Внимание: Если функция ЧИСТРАБДНИ() возвращает ошибку #ЗНАЧ!, проверьте формат ячеек в диапазоне праздников. Excel воспринимает даты как текст, если ячейки отформатированы как "Общий" или "Текстовый".
  • 🗓️ Неучтенные переносы выходных: В России выходные дни иногда переносят (например, если праздник выпадает на субботу). Обновляйте список праздников ежегодно!
  • Ошибки в диапазонах дат: Формула =ЧИСТРАБДНИ(А1;Б1) посчитает дни включительно по дату в Б1. Если нужно исключить последний день, используйте Б1-1.
  • 🌍 Региональные особенности: В разных странах разные праздники. Для международных компаний создавайте отдельные списки праздников по странам.

7. Автоматизация: создание пользовательской функции на VBA

Если вам регулярно нужно считать рабочие дни с учетом специфических правил (например, "каждая вторая пятница — выходной"), имеет смысл написать собственную функцию на VBA. Пример кода для функции, которая считает рабочие дни с учетом дополнительных выходных по нечетным числам:

Function CustomWorkDays(StartDate As Date, EndDate As Date) As Integer

Dim TotalDays As Integer, i As Date

TotalDays = 0

For i = StartDate To EndDate

If Weekday(i, vbMonday) < 6 And Day(i) Mod 2 = 0 Then

TotalDays = TotalDays + 1

End If

Next i

CustomWorkDays = TotalDays

End Function

Чтобы использовать эту функцию:

  1. Нажмите Alt+F11 для открытия редактора VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Сохраните файл как .xlsm (с поддержкой макросов).
  4. Используйте в Excel как стандартную функцию: =CustomWorkDays(A1;B1).
⚠️ Внимание: Макросы могут быть заблокированы настройками безопасности Excel. Перед использованием проверьте параметры в Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Параметры макросов.

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

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

Используйте формулу массива:

=СУММ(

ЧИСТРАБДНИ(

ДАТА(2026;СТРОКА(1:12);1);

КОНМЕСЯЦА(ДАТА(2026;СТРОКА(1:12);1);0);

ДиапазонПраздников

)

)

Вводится как формула массива (Ctrl+Shift+Enter в Excel 2019 и старше).

Можно ли учитывать полупраздничные дни (сокращенный рабочий день)?

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

  • Создайте отдельный столбец с коэффициентами (1 — полный день, 0.5 — полудень) и используйте СУММПРОИЗВ().
  • Напишите пользовательскую функцию на VBA с дополнительным параметром для типа дня.
Почему моя формула возвращает отрицательное число?

Это происходит, если начальная дата позже конечной. Проверьте порядок аргументов в функции. Например, =ЧИСТРАБДНИ(31.01.2026; 01.01.2026;...) вернет отрицательное значение. Исправьте на =ЧИСТРАБДНИ(01.01.2026; 31.01.2026;...).

Как посчитать рабочие дни между сегодняшней датой и концом месяца?

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

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

Для учета текущего дня как рабочего добавьте +1 к результату.

Работает ли это в Google Sheets?

Да, но с поправками:

  • Функция РАБДЕНЬ() называется WORKDAY().
  • Для учета праздников используйте NETWORKDAYS() (аналог ЧИСТРАБДНИ()).
  • Формулы массива вводятся без Ctrl+Shift+Enter.