Расчёт дат с учётом только рабочих дней — одна из самых востребованных задач в Microsoft Excel и Google Таблицах. Без этого не обойтись при планировании проектов, логистике, расчёте сроков поставок или оплаты по контрактам. Например, если вам нужно узнать, на какое число придётся завершение задачи через 15 рабочих дней от сегодняшней даты, или определить крайний срок оплаты с учётом выходных и праздников.
Многие пользователи ошибочно пытаются просто прибавить дни к текущей дате, забывая, что суббота и воскресенье (а иногда и официальные праздники) не учитываются. В результате получают неверные сроки, что может привести к срыву дедлайнов или финансовым потерям. К счастью, в Excel есть специализированные функции, которые решают эту проблему — РАБДЕНЬ и РАБДЕНЬ.МЕЖД. Они автоматически пропускают выходные и даже позволяют исключить праздничные дни.
В этой статье мы разберём, как правильно использовать эти функции на практике, рассмотрим нюансы работы с календарём и покажем, как адаптировать формулы под разные сценарии — от простого планирования до сложных расчётов с учётом региональных праздников.
Почему нельзя просто прибавлять дни к дате
На первый взгляд, задача кажется тривиальной: если нужно узнать дату через 10 рабочих дней, почему бы не прибавить к текущей дате 10? Однако такой подход работает только в одном случае — если все 10 дней попадают на будни и не пересекаются с праздниками. В реальности же:
- 📅 Выходные дни (обычно суббота и воскресенье) автоматически исключаются из расчёта. Например, если сегодня пятница, то через 2 рабочих дня будет не воскресенье, а вторник.
- 🎉 Праздничные дни (например, 1 января или 9 мая в России) тоже не считаются рабочими, даже если выпадают на будний день.
- 🌍 Региональные особенности: в разных странах выходные могут отличаться (например, в некоторых арабских странах выходные — пятница и суббота).
Если проигнорировать эти факторы, расчёт будет неточным. Например, прибавив 5 дней к дате 30.12.2026 (понедельник), вы получите 04.01.2026, но на самом деле рабочих дней в этом промежутке будет только 2 (31.12 и 02.01 — выходные, а 01.01 — праздник). Правильный результат — 07.01.2026.
Именно поэтому в Excel существуют специализированные функции для работы с рабочими днями, которые учитывают все эти нюансы.
Функция РАБДЕНЬ: базовый синтаксис и примеры
Функция РАБДЕНЬ (англ. WORKDAY) — основной инструмент для расчёта дат с учётом рабочих дней. Её синтаксис:
=РАБДЕНЬ(нач_дата; дни; [праздники])
Где:
нач_дата— начальная дата (отсчёт ведётся от неё).дни— количество рабочих дней, которые нужно прибавить (или вычесть, если указать отрицательное значение).[праздники]— необязательный аргумент: диапазон ячеек с датами праздников, которые тоже не считаются рабочими.
Примеры использования:
| Формула | Описание | Результат (если сегодня 10.05.2026) |
|---|---|---|
=РАБДЕНЬ("10.05.2026"; 5) |
Прибавить 5 рабочих дней к 10 мая 2026 года (без учёта праздников). | 17.05.2026 (пятница) |
=РАБДЕНЬ("10.05.2026"; -3) |
Отнять 3 рабочих дня от 10 мая 2026 года. | 06.05.2026 (понедельник) |
=РАБДЕНЬ("10.05.2026"; 10; A2:A5) |
Прибавить 10 рабочих дней, исключив праздники из диапазона A2:A5 (например, 1 и 9 мая). |
24.05.2026 (пятница) |
Важно! Если не указать диапазон с праздниками, функция будет учитывать только субботу и воскресенье. Для точного расчёта в России или других странах с официальными праздниками обязательно добавьте их в отдельный столбец.
Убедитесь, что начальная дата введена как дата (не текст)|Создайте отдельный столбец с праздниками (если нужны)|Проверьте формат ячеек с датами (должен быть "Дата")|Используйте абсолютные ссылки на диапазон праздников (например, $A$2:$A$10)-->
Функция РАБДЕНЬ.МЕЖД: расчёт количества рабочих дней между датами
Обратная задача — определить, сколько рабочих дней прошло между двумя датами, решается с помощью функции РАБДЕНЬ.МЕЖД (англ. NETWORKDAYS). Её синтаксис:
=РАБДЕНЬ.МЕЖД(нач_дата; кон_дата; [праздники])
Примеры:
- 📊
=РАБДЕНЬ.МЕЖД("01.01.2026"; "31.01.2026")— вернёт23(рабочих дня в январе 2026 года без учёта праздников). - 📅
=РАБДЕНЬ.МЕЖД("10.05.2026"; "20.05.2026"; A2:A3)— если вA2:A3указаны праздники 1 и 9 мая, результат будет8.
Эта функция полезна для:
- 📈 Расчёта оплачиваемых дней по больничному листу.
- 📦 Определения сроков доставки (например, "доставка за 3 рабочих дня").
- 📊 Анализа производительности труда за период.
Критическая особенность: функция РАБДЕНЬ.МЕЖД включает в расчёт обе граничные даты, если они являются рабочими. Например, РАБДЕНЬ.МЕЖД("10.05.2026"; "10.05.2026") вернёт 1, а не 0.
Учёт региональных праздников и нестандартных выходных
Стандартные функции Excel считают выходными только субботу и воскресенье, но в реальности календарь может отличаться:
- 🕍 В Израиле выходные — пятница и суббота.
- 🕌 В ОАЭ и Саудовской Аравии — пятница и суббота (или только пятница).
- 🏴 В некоторых странах есть "плавающие" праздники (например, Пасха).
Чтобы адаптировать расчёты под такие случаи, придётся использовать пользовательские функции на VBA или обходные решения. Например, для учёта пятницы как выходного можно:
- Создать столбец с всеми пятницами в диапазоне дат.
- Добавить их в аргумент
[праздники]функцииРАБДЕНЬ.
Пример формулы для учёта пятниц как выходных (для даты в ячейке A1):
=РАБДЕНЬ(A1; 5; $D$2:$D$100)
Где $D$2:$D$100 — диапазон с датами всех пятниц и официальных праздников.
Как автоматически заполнить список пятниц в Excel?
Используйте формулу массива:
=ЕСЛИ(ДЕНЬНЕД(A2:A100;2)=6; A2:A100; ""),
где A2:A100 — диапазон с датами. Затем скопируйте только ненулевые значения в отдельный столбец.
Практический пример: планирование проекта с дедлайнами
Допустим, у вас есть проект с следующими задачами:
| Задача | Длительность (рабочие дни) | Начало | Дедлайн |
|---|---|---|---|
| Анализ требований | 3 | 10.05.2026 |
=РАБДЕНЬ(C2; D2; $F$2:$F$5) |
| Разработка прототипа | 5 | =E2 + 1 | =РАБДЕНЬ(C3; D3; $F$2:$F$5) |
| Тестирование | 2 | =E3 + 1 | =РАБДЕНЬ(C4; D4; $F$2:$F$5) |
В этом примере:
- Столбец
Fсодержит праздники (например,01.05.2026и09.05.2026). - Формула в столбце
Дедлайнавтоматически рассчитывает дату завершения задачи с учётом выходных и праздников. - Дата начала следующей задачи (
C3,C4) — следующий день после завершения предыдущей (E2 + 1).
Результат: вы получите точный график проекта, где все сроки учитывают реальные рабочие дни.
Распространённые ошибки и как их избежать
Даже опытные пользователи Excel иногда допускают ошибки при работе с рабочими днями. Вот самые частые из них:
⚠️ Внимание: Если функцияРАБДЕНЬвозвращает ошибку#ЗНАЧ!, проверьте формат ячеек с датами. Они должны быть в формате "Дата", а не "Текст" или "Общий".
- 🗓 Неверный формат даты: Например,
"10-05-2026"(текст) вместо10.05.2026(дата). Исправляйте с помощью функцииДАТАЗНАЧ:
=РАБДЕНЬ(ДАТАЗНАЧ("10.05.2026"); 5)
-5), но убедитесь, что начальная дата не становится раньше 1900 года (ограничение Excel).РАБДЕНЬ посчитает его рабочим, если не добавить в список праздников.⚠️ Внимание: ФункцииРАБДЕНЬиРАБДЕНЬ.МЕЖДне учитывают сокращённые рабочие дни (например, предпраздничные). Если это критично, придётся корректировать расчёты вручную или использовать VBA.
Чтобы избежать ошибок, всегда проверяйте:
- Формат ячеек с датами (должен быть "Дата").
- Корректность диапазона с праздниками (нет пустых ячеек или текста).
- Логику расчёта (например, прибавляете дни или вычитаете).
Альтернативные способы: Power Query и VBA
Если стандартных функций Excel недостаточно (например, нужно учитывать сменный график или сложные правила выходных), можно использовать:
- 🔄 Power Query: Инструмент для импорта и преобразования данных. Позволяет создавать пользовательские календари с любыми правилами выходных. Например, можно загрузить производственный календарь России и использовать его в расчётах.
- 💻 VBA (макросы): Для полностью кастомизированных решений. Например, функция ниже учитывает выходные в пятницу и субботу:
Function CustomWorkday(start_date As Date, days As Integer, Optional holidays As Range) As Date
Dim i As Integer, day_count As Integer
day_count = 0
Do While day_count < Abs(days)
start_date = start_date + Sgn(days)
If Weekday(start_date, vbFriday) <> 6 And Weekday(start_date, vbFriday) <> 7 Then
If Not holidays Is Nothing Then
If Application.CountIf(holidays, start_date) = 0 Then
day_count = day_count + 1
End If
Else
day_count = day_count + 1
End If
End If
Loop
CustomWorkday = start_date
End Function
Чтобы использовать эту функцию:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Теперь в Excel можно использовать
=CustomWorkday(A1; 5; $D$2:$D$10).
Power Query подходит для одноразовых сложных расчётов, а VBA — если нужна повторяемая логика (например, для ежемесячных отчётов).
FAQ: Ответы на частые вопросы
Как в Excel посчитать дату через 10 рабочих дней, исключая субботу, воскресенье и праздники?
Используйте функцию =РАБДЕНЬ(нач_дата; 10; диапазон_с_праздниками). Например, если начальная дата в A1, а праздники перечислены в D2:D5, формула будет:
=РАБДЕНЬ(A1; 10; D2:D5)
Убедитесь, что ячейки с праздниками отформатированы как даты.
Можно ли в РАБДЕНЬ указать свои выходные дни (например, четверг и пятница)?
Стандартная функция РАБДЕНЬ не поддерживает кастомизацию выходных. Решения:
- Добавьте "лишние" дни (четверги и пятницы) в диапазон праздников.
- Используйте VBA для создания пользовательской функции (пример приведён выше).
Почему РАБДЕНЬ возвращает ошибку #ИМЯ?
Ошибка #ИМЯ! означает, что Excel не распознаёт имя функции. Возможные причины:
- Опечатка в названии (правильно:
РАБДЕНЬ, а неРАБОЧИЙ_ДЕНЬ). - В вашей версии Excel используется английская локализация — попробуйте
WORKDAY. - Отсутствует надстройка "Пакет анализа" (в старых версиях Excel функции рабочих дней могли требовать её активации).
Проверьте также регистр: в русскоязычном Excel функция пишется заглавными буквами.
Как посчитать рабочие дни между двумя датами, исключая обе граничные даты?
Используйте формулу:
=РАБДЕНЬ.МЕЖД(нач_дата + 1; кон_дата - 1; праздники)
Например, для диапазона с 10 по 20 мая 2026 года:
=РАБДЕНЬ.МЕЖД("10.05.2026" + 1; "20.05.2026" - 1; D2:D5)
Можно ли в Google Таблицах использовать РАБДЕНЬ?
Да, в Google Таблицах есть аналогичные функции:
=РАБДЕНЬ(нач_дата; дни; [праздники])— то же, что и в Excel.=ЧИСТРАБДНИ(нач_дата; кон_дата; [праздники])— аналогРАБДЕНЬ.МЕЖД.
Синтаксис и логика работы идентичны.