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

Функция ЧИСТРАБДНИ() в Microsoft Excel возвращает ошибку #ЗНАЧ!, если в аргументах указаны некорректные даты или диапазон праздников ссылается на пустые ячейки. Это типичная проблема при попытке автоматизировать расчёт рабочих дней между двумя датами — особенно когда в формуле не учтены региональные праздники или неверно задан формат ячеек. Чтобы избежать сбоев, проверьте три ключевых момента: правильность ввода дат (например, 15.05.2026, а не текст "15 мая"), соответствие диапазона праздников фактическому списку и отсутствие скрытых символов в ячейках.

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

Если вам нужно быстро посчитать рабочие дни между двумя датами без учёта праздников, достаточно функции ЧИСТРАБДНИ(нач_дата;кон_дата). Например, для периода с 1 по 31 мая 2026 года формула вернёт 21 рабочий день (при стандартной 5-дневной неделе). Но этот метод не учитывает государственные праздники, которые могут выпадать на будни — например, 1 и 9 мая в России. Для точного расчёта потребуется третий аргумент функции: диапазон ячеек с датами праздников.

В Excel 365 и Excel 2019 появилась улучшенная функция РАБДЕНЬ.МЕЖД, которая позволяет добавлять рабочие дни к заданной дате с учётом выходных и праздников. Это полезно для планирования сроков выполнения задач: если задача требует 10 рабочих дней, а стартовая дата — 15 мая, функция вернёт 29 мая (с учётом выходных 18–19 мая и праздников). Разберём оба подхода на конкретных примерах.

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

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

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

Пример использования ЧИСТРАБДНИ:

=ЧИСТРАБДНИ("01.05.2026"; "31.05.2026"; $A$1:$A$5)

где в ячейках A1:A5 перечислены праздники: 1 мая, 9 мая, 10 мая (перенос выходного). Результат — 19 рабочих дней вместо 21.

Функция РАБДЕНЬ пригодится для обратного расчёта. Например, если проект должен быть завершён за 15 рабочих дней с 15 мая 2026 года, формула вернёт дату сдачи:

=РАБДЕНЬ("15.05.2026"; 15; ; $A$1:$A$5)

Результат — 7 июня 2026 года (с учётом выходных и праздников).

Учёт региональных праздников и переносов выходных

В России и странах СНГ праздничные дни часто переносятся, чтобы удлинить выходные. Например, в 2026 году 10 мая (пятница) объявлен выходным вместо 4 мая (воскресенье). Если не обновить список праздников в Excel, функция ЧИСТРАБДНИ посчитает 10 мая как рабочий день, что исказит результат.

Чтобы избежать ошибок:

  1. Создайте отдельный лист Праздники с актуальными датами (можно скачать с сайта правительства или кадровых порталов).
  2. Используйте именованный диапазон: выделите ячейки с праздниками → ФормулыПрисвоить имя → введите Праздники_2026.
  3. В формулах ссылайтесь на именованный диапазон:
    =ЧИСТРАБДНИ(A2; B2; Праздники_2026)

Для автоматизации обновления праздников можно использовать Power QueryExcel 2016 и новее):

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

Вставьте в ячейку формулу =СЧЁТЕСЛИ(Праздники_2026; ">="&ДАТА(2026;5;1)) — она вернёт количество праздников в мае 2026 года. Если результат не совпадает с официальным календарём, обновите диапазон Праздники_2026.

Примеры расчётов для разных сценариев

Рассмотрим типичные задачи, где требуется подсчёт рабочих дней, и готовые решения для них.

Сценарий Формула Пример результата
Количество рабочих дней между 1 и 30 июня 2026 (без праздников) =ЧИСТРАБДНИ("01.06.2026"; "30.06.2026") 21
Дата завершения задачи через 10 рабочих дней с 15.05.2026 (с учётом праздников) =РАБДЕНЬ("15.05.2026"; 10; ; Праздники_2026) 29.05.2026
Проверка, является ли 12 июня 2026 года рабочим днём =ЕСЛИ(ИЛИ(ДЕНЬНЕД("12.06.2026";2)>5; СЧЁТЕСЛИ(Праздники_2026;"12.06.2026")>0); "Выходной"; "Рабочий") Выходной (12 июня — суббота)
Количество рабочих дней в мае 2026 с учётом переноса выходных =ЧИСТРАБДНИ("01.05.2026"; "31.05.2026"; Праздники_2026) 19

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

=РАБДЕНЬ("15.05.2026"; 10; "0000111"; Праздники_2026)

Здесь "0000111" обозначает, что выходные — пятница (5), суббота (6) и воскресенье (7), а рабочие дни — с понедельника по четверг.

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

Ошибки и их исправление

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

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

Для диагностики ошибок используйте пошаговое вычисление:

  1. Выделите ячейку с формулой.
  2. Перейдите на вкладку ФормулыВычисление формулы (F9 в режиме редактирования).
  3. Проверьте, как Excel интерпретирует каждый аргумент.

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

=РАБДЕНЬ("30.06.2026"; -5; ; Праздники_2026)

Эта формула вернёт 24 июня 2026 года (5 рабочих дней назад от 30 июня).

Автоматизация с помощью Power Query и VBA

Для регулярных расчётов (например, ежемесячных отчётов) удобно автоматизировать процесс с помощью Power Query или макросов VBA. Рассмотрим оба подхода.

Способ 1: Power Query для динамического списка праздников

  1. Импортируйте данные о праздниках из веб-источника (как описано выше).
  2. Создайте параметр для текущего года:
    = Date.Year(DateTime.LocalNow())
  3. Отфильтруйте праздники по текущему году и загрузите их в модель данных.
  4. Используйте меру DAX для подсчёта рабочих дней:
    
    

    Рабочие дни =

    VAR StartDate = [Начальная дата]

    VAR EndDate = [Конечная дата]

    RETURN

    NETWORKDAYS(StartDate; EndDate; 'Праздники'[Дата])

Способ 2: VBA-функция для гибкого расчёта

Если стандартных функций недостаточно, создайте пользовательскую функцию:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте новый модуль (InsertModule) и добавьте код:
    
    

    Function CustomWorkDays(StartDate As Date, EndDate As Date, Optional HolidayRange As Range) As Long

    Dim DaysCount As Long, i As Long

    DaysCount = 0

    For i = StartDate To EndDate

    If Weekday(i, vbMonday) < 6 Then ' Пн-Пт — рабочие дни

    If Not HolidayRange Is Nothing Then

    If WorksheetFunction.CountIf(HolidayRange, i) = 0 Then

    DaysCount = DaysCount + 1

    End If

    Else

    DaysCount = DaysCount + 1

    End If

    End If

    Next i

    CustomWorkDays = DaysCount

    End Function

  3. Теперь в Excel можно использовать =CustomWorkDays(A2; B2; Праздники_2026).
⚠️ Внимание: При использовании VBA-функций сохраняйте файл в формате .xlsm (с поддержкой макросов). В противном случае код перестанет работать при следующем открытии.

Практические советы для точных расчётов

Чтобы избежать ошибок и упростить работу с рабочими днями, следуйте этим рекомендациям:

  • 📌 Используйте абсолютные ссылки для диапазона праздников (например, $A$1:$A$10), чтобы не сбивать ссылки при копировании формул.
  • 📅 Проверяйте формат дат: если дата введена как текст (например, "01.05.2026"), функция вернёт ошибку. Используйте =ДАТАЗНАЧ() для преобразования:
    =ЧИСТРАБДНИ(ДАТАЗНАЧ("01.05.2026"); ДАТАЗНАЧ("31.05.2026"); Праздники_2026)
  • 🔄 Создайте шаблон с предварительно заполненными праздниками и формулами. Обновляйте его раз в год.
  • 📊 Визуализируйте рабочие дни с помощью условного форматирования: выделите выходные и праздники красным, а рабочие дни — зелёным.

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

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

1. Проверьте формат ячеек с датами (должен быть "Дата").

2. Обновите список праздников (актуальность на текущий год).

3. Используйте абсолютные ссылки для диапазона праздников ($A$1:$A$10).

4. Убедитесь, что в диапазоне праздников нет пустых ячеек или текста.

5. Для нестандартной рабочей недели укажите выходные в четвёртом аргументе РАБДЕНЬ.-->

Альтернативные методы без встроенных функций

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

Метод 1: Формула на основе ДЕНЬНЕД и СЧЁТЕСЛИ


=СУММПРОИЗВ(--(ДЕНЬНЕД(СТРОКА(ДВССЫЛ($A2&":"&$B2));2)<6); --(СЧЁТЕСЛИ(Праздники_2026; СТРОКА(ДВССЫЛ($A2&":"&$B2)))=0))

Эта формула массива (вводится через Ctrl+Shift+Enter в Excel 2019 и старше) перебирает все даты в диапазоне и исключает выходные и праздники.

Метод 2: Разбивка на этапы

  1. Подсчитайте общее количество дней между датами: =B2-A2.
  2. Вычтите количество полных недель, умноженное на 2 (выходные): = (B2-A2+1) - ОТБР( (B2-A2+1)/7 )*2.
  3. Скорректируйте результат с учётом праздников: =Результат_из_п.2 - СЧЁТЕСЛИ(Праздники_2026; ">="&$A2) + СЧЁТЕСЛИ(Праздники_2026; ">="&$B2+1).

Эти методы менее удобны, чем встроенные функции, но помогут в крайнем случае. Например, в Excel 2003, где нет ЧИСТРАБДНИ, или при работе с очень большими диапазонами дат (более 10 000 строк), где стандартные функции могут тормозить.

=ЧИСТРАБДНИ.МЕЖД(A2; B2; Праздники_2026; "0010011")

где "0010011" обозначает выходные в среду (3), субботу (6) и воскресенье (7).-->

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

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

Используйте ссылку на лист в третьем аргументе функции ЧИСТРАБДНИ. Например:

=ЧИСТРАБДНИ(A2; B2; Лист2!$A$1:$A$10)

Убедитесь, что на листе Лист2 в ячейках A1:A10 перечислены даты праздников в формате даты, а не текста.

Почему функция РАБДЕНЬ возвращает дату на неделю позже ожидаемой?

Скорее всего, в списке праздников указаны не только официальные праздники, но и переносы выходных. Например, если 4 мая (воскресенье) перенесено на 10 мая (пятница), а в вашем списке обе даты отмечены как праздники, функция посчитает 10 мая дважды. Удалите дубли или оставьте только фактические выходные дни.

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

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

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

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

Как учесть в расчётах только будни, но игнорировать праздники?

Используйте функцию ЧИСТРАБДНИ без третьего аргумента:

=ЧИСТРАБДНИ(A2; B2)

Или рассчитайте вручную:

= (B2-A2+1) - ОТБР( (B2-A2+ДЕНЬНЕД(A2;2))/7 )*2 - ЕСЛИ(ДЕНЬНЕД(B2;2)>5; 1; 0) + ЕСЛИ(ДЕНЬНЕД(A2;2)>5; 1; 0)

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

Как посчитать рабочие дни в месяце для составления графика?

Создайте таблицу с датами месяца (например, с 1 по 31 мая) в столбце A, а в столбце B используйте формулу:

=ЕСЛИ(И(ДЕНЬНЕД(A1;2)<6; СЧЁТЕСЛИ(Праздники_2026; A1)=0); "Рабочий"; "Выходной")

Затем примените фильтр по столбцу B со значением "Рабочий" и посчитайте количество видимых строк (=СЧЁТЗ(видимый_диапазон)).