Вычитаем праздничные дни из отпуска в Excel: формулы, примеры и шаблоны

При расчете отпускных в Excel вы столкнулись с проблемой: стандартная функция =РАБДЕНЬ() не учитывает официальные праздники вашей страны, из-за чего итоговая дата выхода на работу сдвигается на 1-3 дня. В России, например, новогодние каникулы (с 1 по 8 января) или майские праздники автоматически не исключаются из календаря — их нужно вручную добавить в формулу через дополнительный диапазон. Если не сделать это правильно, сотрудник может выйти на работу позже положенного срока, а бухгалтерия — неправильно начислить отпускные.

Ошибка возникает даже при использовании =РАБДЕНЬ.МЕЖД(), если не указать список праздников в отдельном столбце или не учесть региональные особенности (например, перенос выходных). В этой статье разберем 3 рабочих способа исключить праздничные дни из отпуска: от простой формулы с ручным вводом дат до динамического решения с автоматическим обновлением праздников на каждый год.

Почему стандартные функции Excel не учитывают праздники

Функции =РАБДЕНЬ() и =РАБДЕНЬ.МЕЖД() по умолчанию работают только с субботами и воскресеньями, игнорируя государственные праздники. Это связано с тем, что:

  • 📅 Нет встроенного календаря праздников. Excel не хранит данные об официальных нерабочих днях для конкретной страны — их нужно добавлять вручную.
  • 🌍 Региональные различия. В России, Беларуси и Казахстане списки праздников отличаются, а в некоторых регионах РФ добавляются локальные выходные (например, День республики в Татарстане).
  • 🔄 Перенос выходных. Правительство ежегодно утверждает перенос выходных дней (например, с субботы на понедельник), что требует ежегодного обновления списка.

Если не учесть эти нюансы, формула вернет некорректную дату. Например, при расчете отпуска с 29 декабря 2026 года на 14 дней стандартная функция покажет выход на работу 12 января, хотя фактически сотрудник должен выйти 15 января (из-за новогодних каникул).

⚠️ Внимание: В Excel 365 и 2021 появилась функция =РАБДЕНЬ.INTL(), которая позволяет задавать собственные выходные дни (например, пятница-суббота для мусульманских стран), но она по-прежнему не учитывает праздники автоматически.

Способ 1: Ручной ввод праздников в формулу

Самый простой метод — указать праздничные даты прямо в аргументах функции. Подходит для разовых расчетов или небольшого количества дат. Формула выглядит так:

=РАБДЕНЬ.МЕЖД(дата_начала; дни_отпуска; [праздники])

Где [праздники] — это массив дат в фигурных скобках. Пример для расчета отпуска с 1 июня 2026 года на 14 дней с учетом майских праздников (1 и 9 мая):

=РАБДЕНЬ.МЕЖД("01.06.2026"; 14; {"01.05.2026"; "09.05.2026"})

Недостатки метода:

  • 📝 Ограничение на 255 символов в формуле — нельзя указать все праздники года.
  • 🔄 Нужно обновлять вручную каждый год или при изменении трудового календаря.
  • 📊 Неудобно для массовых расчетов (например, для всей компании).

Способ 2: Использование отдельного списка праздников

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

  • 📋 Хранить актуальные данные в одном месте и обновлять их раз в год.
  • 🔗 Ссылаться на диапазон в формулах для разных сотрудников.
  • 📈 Добавлять региональные праздники (например, День города).

Шаги настройки:

  1. Создайте на листе таблицу с заголовком "Праздники" и перечислите даты в столбце A (например, A2:A20).
  2. В ячейке с расчетом отпуска используйте формулу:
    =РАБДЕНЬ.МЕЖД(B2; C2; Лист1!$A$2:$A$20)

    где B2 — дата начала отпуска, C2 — количество дней.

  3. Закрепите диапазон праздников абсолютными ссылками ($A$2:$A$20), чтобы копировать формулу на другие строки.

Пример таблицы с праздниками для России (2026 год):

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

Создать отдельный лист "Праздники"|Добавить столбец с датами в формате ДД.ММ.ГГГГ|Указать название праздника (необязательно)|Закрепить диапазон абсолютными ссылками ($A$2:$A$20)|Обновить список раз в год (в декабре)

-->

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

Для точного расчета с учетом переноса выходных (например, когда суббота становится рабочим днем, а понедельник — выходным) потребуется комбинация функций =РАБДЕНЬ.МЕЖД() и =ЕСЛИОШИБКА(). Этот метод подходит для HR-отделов, где важна 100% точность.

Алгоритм:

  1. Создайте таблицу с праздниками и перенесенными выходными (например, если 4 ноября — рабочий день, а 5 ноября — выходной).
  2. Используйте формулу:
    =ЕСЛИОШИБКА(РАБДЕНЬ.МЕЖД(B2; C2; Праздники!$A$2:$A$50); "Ошибка в датах")
  3. Добавьте проверку на корректность даты начала отпуска (например, чтобы она не попадала на праздничный день).

Пример таблицы с перенесенными выходными:

ДатаТипПримечание
04.11.2026Рабочий деньПеренос с 5 ноября
05.11.2026ВыходнойПеренос с 4 ноября
31.12.2026Короткий деньРабота до 15:00
⚠️ Внимание: Если в вашей компании используются "плавающие" праздники (например, Пасха или Курбан-байрам), их даты нужно обновлять ежегодно вручную или подгружать из внешнего источника (например, с сайта правительства).

Вручную добавляю даты в Excel|Использую готовые шаблоны|Пользуюсь специализированными программами (1С, ЗУП)|Не учитываю праздники

-->

Автоматизация: подгрузка праздников из интернета

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

  • 🌐 Power Query (в Excel 2016+). Можно настроить импорт данных с сайта КонсультантПлюс или Гарант, где публикуются производственные календари.
  • 📥 VBA-скриптов. Написать макрос, который парсит данные с государственного портала (например, government.ru) и обновляет список праздников.
  • 🔗 API сервисов. Некоторые HR-системы (например, Bitrix24 или Zoho People) предоставляют API для интеграции с Excel.

Пример кода на VBA для импорта праздников с сайта:

Sub ImportHolidays()

Dim html As Object, tr As Object, td As Object

Dim rowNum As Integer: rowNum = 2

Set html = CreateObject("HTMLFile")

' Здесь код для загрузки HTML-страницы с календарем

For Each tr In html.getElementsByTagName("tr")

For Each td In tr.getElementsByTagName("td")

Sheets("Праздники").Cells(rowNum, 1).Value = td.innerText

rowNum = rowNum + 1

Next td

Next tr

End Sub

Преимущества автоматизации:

  • Актуальность данных — праздники обновляются без участия пользователя.
  • 🔄 Масштабируемость — подходит для расчета отпусков тысячам сотрудников.
  • 📅 Учет региональных особенностей (например, праздники республик в составе РФ).
Как настроить Power Query для импорта праздников

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

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

3. В редакторе Power Query выберите таблицу с датами и преобразуйте ее в нужный формат.

4. Загрузите данные на новый лист Excel и используйте его как источник для функции =РАБДЕНЬ.МЕЖД().

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

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

ОшибкаПричинаРешение
#ЗНАЧ! Некорректный формат даты (текст вместо даты). Используйте =ДАТАЗНАЧ() для преобразования текста в дату.
#ЧИСЛО! Отрицательное количество дней отпуска. Проверьте знак перед числом дней в формуле.
Неправильная дата выхода Пропущен праздничный день в списке. Обновите диапазон праздников или проверьте региональные особенности.

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

  • 📅 Формат ячеек — даты должны быть в формате "ДД.ММ.ГГГГ".
  • 🔢 Региональные настройки Excel (в России первый день недели — понедельник).
  • 🔄 Перенос выходных — иногда суббота становится рабочим днем, а понедельник — выходным.

Готовые шаблоны для расчета отпусков

Чтобы сэкономить время, можно использовать готовые шаблоны Excel с предустановленными формулами и списками праздников. Примеры:

  • 📄 Шаблон от Минтруда РФ. Содержит актуальные праздники и перенос выходных. Скачать на сайте ведомства.
  • 📊 HR-калькулятор отпусков. Включает расчет отпускных, компенсаций и график отпусков. Доступен на 4excel.ru или planetaexcel.ru.
  • 🌍 Международные шаблоны. Для компаний с офисами в разных странах (учитывают локальные праздники).

Пример структуры шаблона:

Лист 1: "Отпуска" — данные сотрудников (ФИО, дата начала, дни отпуска).

Лист 2: "Праздники" — список нерабочих дней.

Лист 3: "Результаты" — автоматически рассчитанные даты выхода на работу.

Важно: Перед использованием шаблона проверьте актуальность праздничных дат и региональные настройки (например, для Крыма или Донецкой Народной Республики список праздников отличается).

FAQ: Частые вопросы по расчету отпусков в Excel

Как учесть праздники, которые выпадают на выходные?

Если праздничный день совпадает с субботой или воскресеньем, он переносится на следующий рабочий день. В Excel это нужно указывать вручную. Например, если 1 мая — суббота, то выходной переносится на понедельник (3 мая). Добавьте обе даты в список праздников.

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

Да, с помощью Power Query или VBA. Настройте импорт данных с официального сайта правительства или Минтруда. В Power Query можно создать запрос, который раз в год обновляет список праздников по нажатию кнопки "Обновить".

Как рассчитать отпуск, если сотрудник работает по сменному графику (например, 2 через 2)?

В этом случае стандартные функции Excel не подойдут. Нужно создать отдельную таблицу с графиком работы сотрудника и использовать функцию =ИНДЕКС() или =ПОИСКПОЗ() для определения рабочих дней. Альтернатива — специализированные программы (например, StaffCop или Кадры 3.0).

Что делать, если в формуле появляется ошибка #ИМЯ?

Ошибка #ИМЯ означает, что Excel не распознает имя функции. Возможные причины:

  • Опечатка в названии функции (например, =РАБДНЕЙ вместо =РАБДЕНЬ).
  • Используется устаревшая версия Excel (до 2007 года), где нет функции =РАБДЕНЬ.МЕЖД().
  • Языковые настройки Excel — функция может называться по-английски (=WORKDAY.INTL()).

Проверьте версию Excel и синтаксис функции.

Как посчитать количество праздничных дней, попавших в отпуск?

Используйте функцию =СЧЁТЕСЛИМН(), чтобы посчитать, сколько дат из списка праздников попадает в диапазон отпуска. Пример:

=СЧЁТЕСЛИМН(Праздники!$A$2:$A$50; ">="&B2; Праздники!$A$2:$A$50; "<="&РАБДЕНЬ.МЕЖД(B2; C2; Праздники!$A$2:$A$50))

где B2 — дата начала отпуска, C2 — количество дней.