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

Почему простая арифметика не работает с рабочими днями

Добавить к дате обычные дни в Microsoft Excel просто: достаточно прибавить число к ячейке с датой. Но когда речь идёт о рабочих днях, всё усложняется. Выходные (обычно суббота и воскресенье), государственные праздники и даже корпоративные нерабочие дни — всё это нужно учитывать, чтобы расчёты были точными. Например, если вы планируете сроки выполнения задачи на 5 рабочих дней, начиная с понедельника, то завершится она не через 5 календарных дней (в пятницу), а через 7 (в следующую среду).

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

Способ 1: Функция РАБДЕНЬ — базовый расчёт без праздников

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

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

Где:

  • 📅 нач_дата — ячейка с начальной датой или дата в формате "ДД.ММ.ГГГГ".
  • дни — количество рабочих дней, которые нужно прибавить (может быть отрицательным для вычитания).
  • 🎉 [праздники] — необязательный аргумент: диапазон ячеек с датами праздников (если не указан, учитываются только выходные).

Пример: если в ячейке A1 указана дата 01.06.2026 (суббота), то формула =РАБДЕНЬ(A1; 5) вернёт 07.06.2026 (пятницу), пропустив субботу и воскресенье. Обратите внимание, что функция автоматически корректирует результат, если начальная дата попадает на выходной.

Способ 2: Учёт праздников с помощью РАБДЕНЬ.МЕЖД

Если в вашем регионе есть официальные праздники, которые не попадают на выходные (например, 1 января или 9 мая), их нужно указать в третьем аргументе функции. Для этого:

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

Синтаксис:

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

Аргумент [выходные] позволяет задать нестандартные выходные. Например:

  • 📊 1 — выходные суббота-воскресенье (по умолчанию).
  • 📊 11 — выходной только воскресенье (6-дневная рабочая неделя).
  • 📊 "0000011" — выходные пятница и суббота (как в некоторых странах Ближнего Востока).

Пример: если в A1 дата 30.12.2026 (понедельник), а в D1:D2 указаны праздники 01.01.2026 и 02.01.2026, то формула =РАБДЕНЬ.МЕЖД(A1; 3; 1; D1:D2) вернёт 06.01.2026 (понедельник), пропустив новогодние каникулы.

Создать отдельный лист "Праздники"|Ввести даты в формате ДД.ММ.ГГГГ|Проверить отсутствие дублей|Заблокировать ячейки от изменений (при необходимости)-->

Способ 3: ЧИСТРАБДНИ — расчёт количества рабочих дней между датами

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

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

Пример: если в A1 дата 01.06.2026, а в B110.06.2026, то формула =ЧИСТРАБДНИ(A1; B1) вернёт 7 (рабочих дней), хотя календарных дней между ними 9.

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

=РАБДЕНЬ(A1; ЧИСТРАБДНИ(A1; B1) + 5)
📊 Как часто вам нужно учитывать праздники в расчётах?
Никогда
1-2 раза в год
Ежемесячно
Каждую неделю

Способ 4: Ручное исключение выходных с формулой массива

Если вам нужно гибко настраивать выходные (например, учитывать сменный график или нестандартные нерабочие дни), используйте комбинацию функций ЕСЛИ, ИЛИ и ДЕНЬНЕД. Этот метод требует знания основ работы с формулами массива, но даёт максимальную точность.

Пример: прибавим 10 рабочих дней к дате в A1, считая выходными субботу и воскресенье:

=A1 + СУММПРОИЗВ(--(ДЕНЬНЕД(A1+СТРОКА(ДВССЫЛ("1:10"))-1)<>1); --(ДЕНЬНЕД(A1+СТРОКА(ДВССЫЛ("1:10"))-1)<>7))

Разберём по шагам:

  1. СТРОКА(ДВССЫЛ("1:10")) создаёт массив чисел от 1 до 10 (количество прибавляемых дней).
  2. ДЕНЬНЕД определяет день недели для каждой даты в массиве.
  3. <>1 и <>7 исключают воскресенье (1) и субботу (7).
  4. СУММПРОИЗВ считает только рабочие дни.
Как работает ДВССЫЛ в формуле?

Функция ДВССЫЛ преобразует текстовый диапазон ("1:10") в реальный массив чисел от 1 до 10. Это позволяет динамически создавать последовательности без ручного ввода.

Этот метод сложнее, но незаменим, если у вас нестандартный график (например, выходные по понедельникам) или нужно учитывать плавающие праздники (как Пасха).

Способ 5: Power Query для сложных календарей

Если вам нужно регулярно работать с большими наборами дат (например, для HR-отчётов или производственного планирования), ручные формулы станут неудобными. В этом случае поможет инструмент Power Query (доступен в Excel 2016+ и Excel 365).

Алгоритм действий:

  1. Перейдите на вкладку Данные → Получить данные → Из других источников → Пустой запрос.
  2. В редакторе Power Query введите команду для генерации календаря:
    = {1..365}
    

    => Date.From(DateTime.LocalNow().AddDays(_))

    => Table.FromList(_, Splitter.SplitByNothing(), {"Date"})

  3. Добавьте столбец с признаком рабочего дня:
    = Table.AddColumn(#"Previous Step", "IsWorkday", each not List.Contains({1,7}, Date.DayOfWeek([Date])))
  4. Загрузите результат в Excel и используйте фильтрацию по столбцу IsWorkday.

Преимущество этого метода — возможность однократной настройки календаря с учётом всех праздников и выходных, а затем простого обновления данных по кнопке Обновить все. Подходит для корпоративных систем, где календарь рабочих дней фиксирован на год вперёд.

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

Даже с правильным синтаксисом функции РАБДЕНЬ или ЧИСТРАБДНИ могут возвращать неверные результаты. Рассмотрим типичные проблемы и их решения:

Ошибка Причина Решение
#ЗНАЧ! Некорректный формат даты (текст вместо даты). Преобразуйте текст в дату с помощью ДАТАЗНАЧ или измените формат ячейки на Дата.
Не учитываются праздники Диапазон с праздниками не зафиксирован (относительная ссылка). Используйте абсолютные ссылки: $D$1:$D$10.
Неверный день недели В настройках Excel неверно указан первый день недели. Перейдите в Файл → Параметры → Дополнительно и проверьте параметр Начать неделю с.
Формула массива не работает В старых версиях Excel не нажаты Ctrl+Shift+Enter. Повторите ввод формулы с правильным сочетанием клавиш.
⚠️ Внимание: Если вы работаете с датами до 1900 года, Excel может их неправильно интерпретировать. Для исторических расчётов используйте специализированные надстройки или преобразуйте даты в текстовый формат.

Практические примеры: планирование проектов и графики работ

Рассмотрим, как прибавление рабочих дней применяется на практике:

Пример 1: Сроки выполнения задачи

Задача начинается 10.06.2026 (понедельник) и требует 8 рабочих дней. Формула:

=РАБДЕНЬ("10.06.2026"; 8)

Результат: 20.06.2026 (четверг). Если добавить праздники (например, 12.06.2026 — День России), результат сдвинется на 21.06.2026.

Пример 2: График дежурств

Сотрудники дежурят через каждые 3 рабочих дня. Начало — 01.07.2026 (понедельник). Формула для расчёта следующего дежурства:

=РАБДЕНЬ.МЕЖД(A1; 3; 1; Праздники!A:A)

Пример 3: Логистика (сроки доставки)

Курьерская служба доставляет товары за 5 рабочих дней, но не работает по субботам и воскресеньям. Формула для расчёта даты доставки:

=РАБДЕНЬ([@Дата_отправки]; 5)
⚠️ Внимание: При работе с большими диапазонами дат (более 1000 строк) функции РАБДЕНЬ могут замедлять пересчёт листа. В этом случае оптимизируйте формулы или используйте Power Query.

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

Можно ли в РАБДЕНЬ указать свои выходные дни, например, пятницу и субботу?

Да, для этого используйте функцию РАБДЕНЬ.МЕЖД с аргументом [выходные]. Например, =РАБДЕНЬ.МЕЖД(A1; 5; "0000110") задаёт выходные в пятницу (5) и субботу (6), где 1 — выходной, 0 — рабочий день.

Как прибавить рабочие дни в Google Таблицах?

В Google Sheets используйте те же функции, но с английским синтаксисом: =WORKDAY(A1; 5) или =WORKDAY.INTL(A1; 5; 1; Holidays!A:A). Отличие только в разделителе аргументов — запятая вместо точки с запятой.

Почему РАБДЕНЬ возвращает дату раньше, чем начальная?

Это происходит, если вы указали отрицательное количество дней. Например, =РАБДЕНЬ(A1; -3) вычтет 3 рабочих дня из начальной даты. Проверьте знак перед числом в формуле.

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

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

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

Да, с помощью Power Query или надстроек (например, Power BI). Настройте запрос к API календаря (например, Google Calendar API) и обновите данные перед расчётами. Альтернатива — ручной импорт праздников из файла .ics.