Как в Excel вывести рабочие дни: 5 способов для точных расчётов

Почему расчёт рабочих дней в Excel — это не просто арифметика

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

Проблема в том, что простая разница между двумя датами (=B2-A2) учитывает все календарные дни, включая субботы, воскресенья и официальные праздники. А для бизнес-задач — от планирования поставок до расчёта зарплаты — нужны именно рабочие дни. В этой статье разберём 5 проверенных способов, как в Excel вывести рабочие дни с учётом выходных, праздников и даже индивидуальных графиков.

Спойлер: вам не придётся писать сложные макросы или изучать VBA. Все решения основаны на стандартных функциях, которые работают в Excel 2010–2023 и Excel Online. А если вы работаете с Google Таблицами — большинство методов подойдёт и там (с небольшими поправками).

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

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

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

Где:

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

Пример: если сегодня 10 мая 2026 (пятница), то формула =РАБДЕНЬ("10.05.2026"; 5) вернёт 17.05.2026 (пятницу следующей недели), пропустив субботу и воскресенье.

Формула Результат (при нач_дата = 10.05.2026) Пояснение
=РАБДЕНЬ("10.05.2026"; 1) 13.05.2026 Следующий рабочий день (понедельник).
=РАБДЕНЬ("10.05.2026"; -1) 09.05.2026 Предыдущий рабочий день (четверг).
=РАБДЕНЬ("10.05.2026"; 5; {"01.05.2026"}) 17.05.2026 Учитывает 1 мая как праздник (хотя в примере он уже прошёл).
⚠️ Внимание: Если вы укажете в аргументе [праздники] дату, которая выпадает на выходной, Excel проигнорирует её — праздники учитываются только если приходятся на будни.

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

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

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

Пример: формула =ЧИСТРАБДНИ("01.05.2026"; "31.05.2026") вернёт 23 — столько рабочих дней в мае 2026 года (без учёта праздников). Если добавить праздники:

=ЧИСТРАБДНИ("01.05.2026"; "31.05.2026"; {"01.05.2026"; "09.05.2026"})

Результат будет 21 (минус 1 и 9 мая).

Убедиться, что даты введены как даты (не как текст)|Проверить формат ячеек (должен быть "Дата")|Указать праздники в отдельном диапазоне (если нужны)|Исключить дубликаты в списке праздников-->

Эту функцию удобно использовать для:

  • 📊 Расчёта отработанных дней в табеле учёта рабочего времени.
  • 📅 Планирования сроков выполнения задач в проектах.
  • 💰 Подсчёта дней для начисления зарплаты или больничных.
⚠️ Внимание: Если кон_дата раньше нач_дата, функция вернёт отрицательное значение. Чтобы избежать ошибок, используйте =АБС(ЧИСТРАБДНИ(...)).

Способ 3: Учёт индивидуальных выходных (не только суббота-воскресенье)

Что делать, если ваша компания работает по графику 2/2 (два дня через два) или у вас нестандартные выходные? Например, в некоторых странах выходными являются пятница и суббота. Для таких случаев в Excel 2010 и новее есть функция =РАБДЕНЬ.МЕЖД (англ. WORKDAY.INTL).

Её синтаксис:

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

Ключевое отличие — аргумент [выходные], который задаёт какие дни недели считать выходными. Он может быть:

  • 🔢 Числом (например, 1 — суббота-воскресенье, 11 — воскресенье-понедельник).
  • 📝 Строкой из 7 символов (например, "0000011", где 1 — выходной, 0 — рабочий день).

Примеры:

Формула Выходные дни Результат (при нач_дата = 10.05.2026)
=РАБДЕНЬ.МЕЖД("10.05.2026"; 5; 1) Сб-Вс (стандарт) 17.05.2026
=РАБДЕНЬ.МЕЖД("10.05.2026"; 5; 11) Вс-Пн 18.05.2026
=РАБДЕНЬ.МЕЖД("10.05.2026"; 5; "0000011") Сб-Вс (задано строкой) 17.05.2026
=РАБДЕНЬ.МЕЖД("10.05.2026"; 5; "0101010") Пн, Ср, Пт 22.05.2026

Важно: если вы используете строковый формат для аргумента [выходные], порядок дней всегда начинается с понедельника. Например, строка "0000011" означает, что выходные — суббота (6-й символ) и воскресенье (7-й символ).

Стандартный (пн-пт)|Сменный (например, 2/2)|Неполная неделя (например, пн-чт)|Другой-->

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

Если вам нужно учитывать государственные праздники, которые меняются каждый год (например, Пасха или переносимые выходные), вручную вводить их неудобно. Решение — автоматически импортировать праздники из внешних источников.

Вот пошаговая инструкция для Excel 365 и Excel 2021:

  1. Перейдите на вкладку ДанныеПолучить данныеИз других источниковИз интернета.
  2. Вставьте URL с данными о праздниках (например, isdayoff.ru предоставляет API для России).
  3. Преобразуйте данные в таблицу и свяжите их с функцией ЧИСТРАБДНИ через именованный диапазон.

Пример формулы с динамическим списком:

=ЧИСТРАБДНИ(A2; B2; Праздники!A:A)

Где Праздники!A:A — столбец с датами праздников, импортированными из интернета.

Как обновить данные о праздниках

Чтобы актуализировать список праздников, нажмите правой кнопкой на таблицу с данными и выберите Обновить. В Excel Online обновление происходит автоматически при открытии файла.

⚠️ Внимание: При импорте данных из интернета Excel может запросить разрешение на подключение к внешнему источнику. Убедитесь, что источник надёжен, чтобы избежать утечек данных.

Способ 5: Пользовательская функция на VBA для сложных графиков

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

Function CustomWorkdays(start_date As Date, end_date As Date, Optional holidays As Range) As Long

Dim day_count As Long, current_date As Date

current_date = start_date

day_count = 0

Do While current_date <= end_date

' Проверяем, что день не выходной (например, сб или вс)

If Weekday(current_date, vbMonday) < 6 Then

' Проверяем, что день не праздник

If Not holidays Is Nothing Then

If WorksheetFunction.CountIf(holidays, current_date) = 0 Then

day_count = day_count + 1

End If

Else

day_count = day_count + 1

End If

End If

current_date = current_date + 1

Loop

CustomWorkdays = day_count

End Function

Чтобы использовать эту функцию:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (InsertModule).
  3. Сохраните файл как .xlsm (с поддержкой макросов).
  4. Теперь в ячейке можно использовать =CustomWorkdays(A2; B2; Праздники!A:A).

Преимущества этого метода:

  • 🔧 Гибкость: можно задать любые правила для выходных (например, "каждый третий понедельник месяца").
  • 🌍 Мультирегиональность: поддерживает разные праздники для разных филиалов.
  • 📈 Производительность: работает быстрее, чем сложные формулы с множеством условий.

Типичные ошибки и как их избежать

Даже опытные пользователи Excel иногда допускают ошибки при работе с рабочими днями. Вот самые распространённые:

  1. Формат ячеек не "Дата".
    Если Excel воспринимает вашу дату как текст, функции РАБДЕНЬ и ЧИСТРАБДНИ вернут ошибку #ЗНАЧ!. Чтобы исправить:
    • Выделите ячейку → правая кнопка → Формат ячеек → выберите Дата.
    • Используйте функцию =ДАТАЗНАЧ() для преобразования текста в дату.
  • Праздники указаны как текст.
    Если в диапазоне [праздники] даты записаны как "01.05.2026" (текст), а не как даты, они не будут учтены. Проверьте формат столбца с праздниками.
  • Неправильный регион в настройках Excel.
    В некоторых локализациях Excel функции РАБДЕНЬ и ЧИСТРАБДНИ могут называться по-другому (например, на немецком — ARBEITSTAG). Убедитесь, что у вас английская или русская версия.
  • Ещё одна частая проблема — переносимые выходные. Например, если суббота объявлена рабочим днём, а понедельник — выходным, стандартные функции не учтут это автоматически. Решение:

    • 📅 Добавьте перенесённый выходной в список праздников.
    • 🔄 Используйте РАБДЕНЬ.МЕЖД с кастомными выходными (например, "0100001" для выходного в понедельник).

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

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

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

    =ЧИСТРАБДНИ("01.01.2026"; "31.01.2026"; {"01.01.2026"; "07.01.2026"})

    Эта формула вернёт количество рабочих дней в январе 2026 года за вычетом 1 и 7 января.

    Можно ли в Excel учитывать региональные праздники (например, для разных стран)?

    Да, для этого:

    1. Создайте отдельные списки праздников для каждого региона на разных листах.
    2. В функции ЧИСТРАБДНИ или РАБДЕНЬ ссылайтесь на нужный диапазон. Например:
    =ЧИСТРАБДНИ(A2; B2; Если(C2="Россия"; Россия!A:A; Беларусь!A:A))

    Где C2 — ячейка с названием региона.

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

    В Google Sheets используются те же функции, но на английском:

    • =WORKDAY() — аналог РАБДЕНЬ.
    • =NETWORKDAYS() — аналог ЧИСТРАБДНИ.
    • =WORKDAY.INTL() — аналог РАБДЕНЬ.МЕЖД.

    Пример:

    =NETWORKDAYS("5/1/2026"; "5/31/2026"; {"5/1/2026"; "5/9/2026"})
    Почему функция РАБДЕНЬ возвращает ошибку #ИМЯ?

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

    • Опечатка в названии (проверьте регистр: РАБДЕНЬ, а не рабдень).
    • Используется нерусская версия Excel (попробуйте WORKDAY).
    • Отсутствует надстройка Пакет анализа (в старых версиях Excel некоторые функции требуют её активации).

    Решение: переключитесь на английскую раскладку и попробуйте =WORKDAY().

    Как посчитать рабочие часы (а не дни) в Excel?

    Для подсчёта рабочих часов между двумя датами:

    1. Вычислите количество рабочих дней (например, с помощью ЧИСТРАБДНИ).
    2. Умножьте на количество рабочих часов в день. Например:
    =ЧИСТРАБДНИ(A2; B2) * 8

    Где 8 — стандартная продолжительность рабочего дня в часах.

    Для более точного расчёта (с учётом времени начала/окончания рабочего дня) используйте:

    =ЕСЛИ(И(ЧАС(A2)>=9; ЧАС(A2)<18); ЧИСТРАБДНИ(A2; B2)  8; ЧИСТРАБДНИ(A2; B2)  8 - (ЕСЛИ(ЧАС(A2)<9; 9-ЧАС(A2); 0) + ЕСЛИ(ЧАС(B2)>=18; ЧАС(B2)-18; 0)))