Расчет рабочих дней в Microsoft Excel — одна из самых востребованных задач для бухгалтеров, менеджеров проектов и HR-специалистов. Нужно ли вам спланировать сроки выполнения задачи, рассчитать зарплату за отработанные дни или определить дату завершения проекта с учетом выходных и праздников — без точных вычислений не обойтись. Однако многие пользователи сталкиваются с ошибками: забывают учесть региональные праздники, неправильно настраивают диапазоны дат или путают функции ЧИСТРАБДНИ и РАБДЕНЬ.
В этой статье мы разберем все способы подсчета рабочих дней — от базовых формул до сложных расчетов с пользовательскими календарями. Вы узнаете, как автоматизировать процесс, избежать типичных ошибок и адаптировать формулы под специфические задачи (например, для сменного графика или нестандартной рабочей недели). А в конце статьи вас ждет FAQ с ответами на частые вопросы и практические примеры для скачивания.
Базовые функции Excel для расчета рабочих дней
В Excel есть две ключевые функции для работы с рабочими днями: ЧИСТРАБДНИ (англ. NETWORKDAYS) и РАБДЕНЬ (англ. WORKDAY). Их часто путают, но у них разные задачи:
- 📅
ЧИСТРАБДНИ— считает количество рабочих дней между двумя датами. - 📆
РАБДЕНЬ— определяет конкретную дату через заданное количество рабочих дней.
Синтаксис ЧИСТРАБДНИ:
=ЧИСТРАБДНИ(начальная_дата; конечная_дата; [праздники])
Где [праздники] — необязательный диапазон ячеек с датами праздничных дней. По умолчанию функция считает выходными субботу и воскресенье.
Пример: чтобы посчитать рабочие дни между 1 и 31 января 2026 года (без учета праздников), используйте:
=ЧИСТРАБДНИ("01.01.2026"; "31.01.2026")
Результат — 23 рабочих дня (31 день в январе минус 8 выходных).
Как учесть праздничные дни в расчетах
Без учета праздников расчет рабочих дней будет неточным. Например, в России 1 января — официальный выходной, но ЧИСТРАБДНИ по умолчанию посчитает его как рабочий день. Чтобы исправить это, нужно:
- Создать отдельный список праздников в виде столбца с датами (например, в диапазоне
A2:A10). - Добавить этот диапазон в формулу как третий аргумент:
=ЧИСТРАБДНИ("01.01.2026"; "31.01.2026"; A2:A10)
Пример списка праздников для России (январь 2026):
| Дата | Праздник |
|---|---|
| 01.01.2026 | Новый год |
| 02.01.2026 | Новогодние каникулы |
| 07.01.2026 | Рождество Христово |
| 08.01.2026 | Новогодние каникулы |
С учетом этих праздников формула вернет 20 рабочих дней вместо 23. Это критично для расчета зарплаты или сроков выполнения задач!
Функция ЧИСТРАБДНИ.INTL: для нестандартных графиков
Если ваша компания работает по гибкому графику (например, выходные в пятницу и субботу или только в воскресенье), используйте ЧИСТРАБДНИ.INTL. Она позволяет задать:
- 📌 Пользовательские выходные (например, только воскресенье).
- 📌 Нерабочие дни недели (например, среда — короткий день).
Синтаксис:
=ЧИСТРАБДНИ.INTL(начальная_дата; конечная_дата; [выходные]; [праздники])
Аргумент [выходные] кодируется числом от 1 до 17 или строкой из 7 символов (например, "0000011", где 1 — выходной, 0 — рабочий день). Примеры:
- 🔹
"0000011"— выходные суббота и воскресенье (стандарт). - 🔹
"0000001"— выходной только воскресенье. - 🔹
"1000001"— выходные пятница и воскресенье.
Важно: если ваша компания работает по сменному графику (например, 2 через 2), ЧИСТРАБДНИ.INTL не подойдет — потребуется VBA-скрипт или дополнительная таблица с расписанием смен.
Функция РАБДЕНЬ: расчет даты завершения проекта
Когда нужно узнать, на какую дату придется завершение задачи через N рабочих дней, используйте РАБДЕНЬ. Например, если проект стартует 10 января 2026 года и требует 15 рабочих дней, формула:
=РАБДЕНЬ("10.01.2026"; 15; A2:A10)
вернет 31 января 2026 года (с учетом праздников из диапазона A2:A10).
Аналогично ЧИСТРАБДНИ, для нестандартных графиков есть РАБДЕНЬ.INTL:
=РАБДЕНЬ.INTL("10.01.2026"; 15; [выходные]; A2:A10)
Указать стартовую дату|Проверить список праздников|Учесть региональные особенности|Проверьте формат ячеек (должен быть "Дата")-->
Типичные ошибки и как их избежать
Даже опытные пользователи Excel допускают ошибки при расчете рабочих дней. Вот самые распространенные:
⚠️ Внимание: Если формула возвращает ошибку #ЗНАЧ!, проверьте формат ячеек с датами. Они должны быть в формате "Дата", а не "Текст" или "Общий".
- 🚫 Неучтенные праздники — если не указать диапазон с праздничными датами, расчет будет неточным.
- 🚫 Неверный регион — в разных странах разные праздники. Например, 25 декабря (Рождество) — выходной в Европе, но не в России.
- 🚫 Пересечение диапазонов — если начальная дата позже конечной, функция вернет ошибку.
Чтобы избежать проблем:
- Всегда проверяйте формат ячеек (
Формат → Формат ячеек → Дата). - Используйте абсолютные ссылки для диапазона праздников (например,
$A$2:$A$10). - Для международных проектов создавайте отдельные таблицы с праздниками по странам.
Как проверить формат ячеек?
Выделите ячейку → Правый клик → "Формат ячеек" → Вкладка "Число". Если выбран формат "Текст", измените на "Дата".
Практические примеры: расчет зарплаты, сроков и графиков
Рассмотрим реальные кейсы, где расчет рабочих дней критичен.
1. Расчет зарплаты за отработанные дни
Допустим, сотрудник работал с 1 по 15 января 2026 года. Его оклад — 60 000 ₽ за 20 рабочих дней в месяце. Чтобы посчитать зарплату пропорционально отработанным дням:
=60000/20 * ЧИСТРАБДНИ("01.01.2026"; "15.01.2026"; A2:A10)
Результат: 22 500 ₽ (при 5 рабочих днях с учетом праздников).
2. Планирование сроков проекта
Если проект должен быть завершен за 30 рабочих дней, а старт — 1 февраля 2026 года, дата завершения:
=РАБДЕНЬ("01.02.2026"; 30; A2:A10)
Результат: 15 марта 2026 года (с учетом 23 февраля — Дня защитника Отечества).
3. График дежурств
Для создания графика дежурств (например, через каждые 3 рабочих дня) используйте комбинацию РАБДЕНЬ и ЕСЛИ:
=ЕСЛИ(РАБДЕНЬ(последняя_дата_дежурства; 3; A2:A10)<=конечная_дата; РАБДЕНЬ(последняя_дата_дежурства; 3; A2:A10); "")
Автоматизация: как создать шаблон календаря
Чтобы не вводить праздники вручную каждый раз, создайте динамический шаблон:
- Создайте лист
Праздникии перечислите все нерабочие дни на год. - На основном листе используйте именованный диапазон:
=ИМЯ("Праздники"; Праздники!$A$2:$A$20) - В формулах ссылайтесь на именованный диапазон:
=ЧИСТРАБДНИ("01.01.2026"; "31.12.2026"; Праздники)
Преимущества:
- 🔄 Обновляете праздники один раз в год.
- 📂 Формулы становятся короче и понятнее.
- 🔒 Минимизируете риск ошибок при копировании диапазонов.
⚠️ Внимание: Если вы делитесь файлом с коллегами, убедитесь, что именованные диапазоны сохраняются при экспорте. В некоторых версиях Excel они могут сбрасываться.
FAQ: ответы на частые вопросы
Можно ли в ЧИСТРАБДНИ указать несколько диапазонов праздников?
Нет, функция принимает только один диапазон. Однако вы можете:
- Объединить все праздники в один столбец.
- Использовать вспомогательный столбец с формулой
=ЕСЛИОШИБКА(ПОИСКПОЗ(...); 0)для проверки дат в нескольких диапазонах.
Как посчитать рабочие дни между двумя датами, если выходные — понедельник и вторник?
Используйте ЧИСТРАБДНИ.INTL с параметром "0000011" (где первые два дня недели — выходные):
=ЧИСТРАБДНИ.INTL("01.01.2026"; "31.01.2026"; "0000011"; A2:A10)
Почему РАБДЕНЬ возвращает дату раньше, чем ожидалось?
Вероятные причины:
- В диапазоне праздников есть даты, которые не являются выходными (например, суббота уже учтена как выходной по умолчанию).
- Неверно указано количество рабочих дней (например, 10 вместо 15).
- Начальная дата сама является праздником или выходным.
Проверьте все параметры и используйте функцию ДЕНЬНЕД, чтобы убедиться в корректности выходных:
=ДЕНЬНЕД("01.01.2026"; 2)
(Возвращает 1 для понедельника, 7 для воскресенья.)
Как посчитать рабочие дни в Google Sheets?
В Google Таблицах используются аналогичные функции, но с английскими названиями:
=NETWORKDAYS(start_date; end_date; [holidays])— аналогЧИСТРАБДНИ.=WORKDAY(start_date; days; [holidays])— аналогРАБДЕНЬ.
Синтаксис и логика работы идентичны Excel.
Можно ли учитывать полурабочие дни (например, предпраздничные)?
Стандартные функции Excel не поддерживают полурабочие дни. Решения:
- Создать отдельный столбец с коэффициентами (например, 0.5 для полурабочего дня) и умножать результат
ЧИСТРАБДНИна этот коэффициент. - Использовать VBA для кастомизации логики.