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

Работаете с дедлайнами, графиками поставок или производственными планами? Тогда вам точно приходилось считать сроки с учётом только рабочих дней, исключая выходные и праздники. Вручную это делать утомительно — особенно если речь идёт о десятках строк в таблице. К счастью, Microsoft Excel предлагает встроенные функции, которые автоматизируют этот процесс.

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

Вы узнаете:

  • 🔹 Как прибавить к дате N рабочих дней с учётом выходных (формула РАБДЕНЬ)
  • 🔹 Как исключить из расчёта праздничные дни (функция ЧИСТРАБДНИ)
  • 🔹 Что делать, если выходные не суббота-воскресенье (настройка ВЫХОДНОЙ)
  • 🔹 Как автоматизировать расчёты для целого столбца дат

А в конце статьи — FAQ с ответами на частые ошибки и готовые шаблоны для скачивания.

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

Базовая формула: РАБДЕНЬ для прибавления рабочих дней

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

Синтаксис:

=РАБДЕНЬ(нач_дата; дни; [праздники])
  • 📅 нач_дата — исходная дата (например, "10.05.2026" или ссылка на ячейку A2)
  • дни — количество рабочих дней для прибавления (может быть отрицательным!)
  • 🎉 [праздники]необязательный аргумент: диапазон с датами праздников

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

=РАБДЕНЬ("01.06.2026"; 10)

Результат: 13.06.2026 (пропущены 2 выходных — 8 и 9 июня).

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

А что если в расчётном периоде попадается государственный праздник? Например, 12 июня в России — День независимости. Функция РАБДЕНЬ его проигнорирует, если не указать явным списком.

Для этого используйте ЧИСТРАБДНИ (англ. WORKDAY.INTL) — расширенную версию с поддержкой кастомных выходных и праздников. Синтаксис:

=ЧИСТРАБДНИ(нач_дата; дни; [выходной]; [праздники])
  • 📅 нач_дата и дни — аналогично РАБДЕНЬ
  • 🔄 [выходной] — код выходных дней (по умолчанию 1 — суббота-воскресенье)
  • 🎉 [праздники] — диапазон с датами (например, D2:D10)

Пример 2. Добавим к предыдущему примеру праздник 12 июня (ячейка D2 содержит "12.06.2026"):

=ЧИСТРАБДНИ("01.06.2026"; 10; 1; D2)

Результат: 14.06.2026 (с учётом праздника срок сдвинулся на день вперёд).

Коды выходных дней в ЧИСТРАБДНИ

1 — суббота-воскресенье (по умолчанию)

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

3 — понедельник-вторник

...

11 — только воскресенье

12 — только понедельник

13 — только вторник и т.д.

Нестандартные выходные: пятница-суббота и другие варианты

В некоторых странах (например, ОАЭ или Саудовская Аравия) выходные приходятся на пятницу и субботу. Для таких случаев в ЧИСТРАБДНИ предусмотрен аргумент [выходной].

Пример 3. Рассчитаем дату через 5 рабочих дней с выходными в пятницу-субботу:

=ЧИСТРАБДНИ("01.06.2026"; 5; 7)

Код 7 соответствует выходным пятница-суббота. Результат: 07.06.2026 (пропущены 7 и 8 июня).

⚠️ Внимание: Если указать неверный код выходных (например, 15), Excel вернёт ошибку #ЧИСЛО!. Полный список кодов см. в спойлере выше.

Для наглядности — таблица соответствия кодов и выходных:

КодВыходные дниПример стран
1Суббота, воскресеньеРоссия, США, Европа
2Воскресенье, понедельник
7Пятница, субботаОАЭ, Саудовская Аравия
11Только воскресеньеБразилия (частично)
17Суббота (один день)Непал

Динамический список праздников: как автоматизировать

Если праздники повторяются ежегодно (например, Новый год или 8 Марта), можно создать динамический диапазон, который будет автоматически обновляться.

Способ 1. Используйте формулу для генерации праздников на текущий год:

=ДАТА(ГОД(СЕГОДНЯ()); 1; 1)  // Новый год

=ДАТА(ГОД(СЕГОДНЯ()); 3; 8) // 8 Марта

=ДАТА(ГОД(СЕГОДНЯ()); 5; 1) // 1 Мая

Способ 2. Для "плавающих" праздников (например, Пасха) используйте ВПР или ИНДЕКС с предварительно рассчитанными датами.

Создайте отдельный лист "Праздники"|Укажите даты в формате ДД.ММ.ГГГГ|Присвойте диапазону имя (например, Праздники_2026)|Используйте имя в формуле: =ЧИСТРАБДНИ(A2; B2; ; Праздники_2026)

-->

Пример 4. Допустим, у вас в диапазоне F2:F5 перечислены праздники 2026 года. Формула для ячейки C2:

=ЧИСТРАБДНИ(A2; B2; 1; $F$2:$F$5)

Знак $ фиксирует диапазон праздников при копировании формулы вниз.

Ошибки и решения: почему формула не работает

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

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

Лайфхак: Чтобы проверить, распознаёт ли Excel вашу дату как дату, используйте функцию ДАТАЗНАЧ:

=ДАТАЗНАЧ("01.06.2026")

Если результат — число (например, 45450), всё в порядке. Если #ЗНАЧ! — исправляйте формат.

Продвинутые сценарии: рабочие дни между двумя датами

А что если нужно посчитать количество рабочих дней между двумя датами? Например, для расчёта оплаты по договору или длительности проекта.

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

=ЧИСТРАБДНИ(дата_начала; (дата_конца - дата_начала); [выходной]; [праздники])

Пример 5. Сколько рабочих дней между 01.06.2026 и 15.06.2026 (исключая праздники в F2:F5)?

=ЧИСТРАБДНИ("01.06.2026"; ("15.06.2026"-"01.06.2026"); 1; F2:F5)

Результат: 10 (из 14 календарных дней вычтены 4 выходных и 1 праздник).

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

Function РабДниМежду(StartDate As Date, EndDate As Date, Optional Holidays As Range) As Long

РабДниМежду = Application.WorksheetFunction.NetWorkdays(StartDate, EndDate, Holidays)

End Function

Теперь в Excel используйте:

=РабДниМежду("01.06.2026"; "15.06.2026"; F2:F5)

Готовые шаблоны и альтернативные способы

Если формулы кажутся сложными, воспользуйтесь готовыми решениями:

  • 📄 Шаблон календаря с автоматическим подсчётом рабочих дней (скачать можно на Office Templates).
  • 🤖 Power Query: импортируйте данные с датами и используйте встроенные функции трансформации для добавления рабочих дней.
  • 📊 Google Sheets: функции WORKDAY и NETWORKDAYS работают аналогично, но с небольшими синтаксическими отличиями.

Критическая особенность: В Google Таблицах функция NETWORKDAYS не поддерживает аргумент [выходной] — для нестандартных выходных придётся использовать Apps Script.

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

=ЕСЛИ(И(A2<>""; B2<>""); ЧИСТРАБДНИ(A2; B2; 1; Праздники); "")

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

Как прибавить рабочие дни к текущей дате?

Используйте СЕГОДНЯ() в качестве первого аргумента:

=РАБДЕНЬ(СЕГОДНЯ(); 5)

Формула вернёт дату через 5 рабочих дней от сегодняшнего дня.

Можно ли исключить из расчёта конкретные дни недели (например, среду)?

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

Function CustomWorkday(StartDate As Date, DaysToAdd As Long, Optional ExcludeDays As Variant) As Date

Dim i As Long, CurrentDate As Date

CurrentDate = StartDate

For i = 1 To DaysToAdd

CurrentDate = CurrentDate + 1

Do While Weekday(CurrentDate, vbMonday) = ExcludeDays Or IsHoliday(CurrentDate)

CurrentDate = CurrentDate + 1

Loop

Next i

CustomWorkday = CurrentDate

End Function

Где ExcludeDays — массив дней недели для исключения (например, Array(4) для среды).

Почему результат отличается от ручного подсчёта?

Чаще всего причина в:

  1. Неучтённых праздниках (проверьте диапазон [праздники]).
  2. Неверном коде выходных (по умолчанию суббота-воскресенье).
  3. Формате ячеек: даты должны быть в формате Дата, а не Общий или Текст.

Используйте ФОРМУЛА.ТЕКСТ, чтобы увидеть реальные значения в ячейках:

=ФОРМУЛА.ТЕКСТ(A2)
Как посчитать рабочие дни в обратном порядке (вычесть дни)?

Просто укажите отрицательное значение в аргументе дни:

=РАБДЕНЬ("15.06.2026"; -5)

Результат: 09.06.2026 (5 рабочих дней назад от 15 июня).

Есть ли ограничения на количество дней в формуле?

Технически нет, но:

  • Excel поддерживает даты с 01.01.1900 по 31.12.9999.
  • При очень больших значениях (например, +10000 дней) результат может выйти за пределы поддерживаемого диапазона.
  • Производительность книги может снизиться при расчётах для тысяч строк.