Расчет рабочих дней и стажа в Excel: полное руководство
Чтобы посчитать количество рабочих дней между двумя датами в Excel, используйте функцию =NETWORKDAYS(дата_начала; дата_окончания; [праздники]). Для расчета стажа работы (разницы дат) в годах и месяцах применяйте связку функций DATEDIF: =DATEDIF(начало; конец; "y") & " лет " & DATEDIF(начало; конец; "ym") & " мес.". Эти инструменты позволяют автоматически исключать выходные, учитывать государственные праздники и формировать точные отчеты для кадрового делопроизводства или управления проектами.
Базовый расчет рабочих дней
Стандартная функция NETWORKDAYS возвращает количество рабочих дней между двумя датами, автоматически исключая субботы и воскресенья. Это основной инструмент для планирования сроков проектов и расчета отработанных дней.
Синтаксис:
=NETWORKDAYS(начальная_дата; конечная_дата; [список_праздников])
- Начальная и конечная даты: Ссылки на ячейки с датами или сами даты.
- Список праздников (необязательно): Диапазон ячеек, содержащий даты государственных праздников, которые также не считаются рабочими.
Функция включает в расчет и начальную, и конечную дату. Если вам нужно исключить один из краев периода, скорректируйте формулу, прибавив или отняв 1 день от аргумента даты.
Пример использования:
Предположим, дата начала проекта в ячейке A2, дата окончания — в B2, а список праздников расположен в диапазоне E2:E10.
Формула будет выглядеть так:
=NETWORKDAYS(A2; B2; E2:E10)
Если праздников нет или их не нужно учитывать, третий аргумент можно опустить:
=NETWORKDAYS(A2; B2)
Учет нестандартных графиков работы
Не во всех организациях выходные дни выпадают на субботу и воскресенье. Для таких случаев существует расширенная функция NETWORKDAYS.INTL, позволяющая задать индивидуальный код выходных дней.
Синтаксис:
=NETWORKDAYS.INTL(начальная_дата; конечная_дата; [код_выходных]; [праздники])
Аргумент [код_выходных] может быть числом от 1 до 17 или строкой из семи символов («0» — рабочий, «1» — выходной), где первый символ соответствует понедельнику, а последний — воскресенью.
Популярные коды:
| Код | Строка | Выходные дни |
|---|---|---|
| 1 | "0000011" | Суббота, Воскресенье (стандарт) |
| 2 | "1000000" | Только Воскресенье |
| 3 | "0000001" | Только Суббота |
| 7 | "0000110" | Пятница, Суббота |
| 11 | "1111110" | Только Воскресенье (альтернативный код) |
Пример для графика 2/2 или сменного:
Если в вашей компании выходными являются пятница и суббота, формула примет вид:
=NETWORKDAYS.INTL(A2; B2; 7; E2:E10)
Расчет трудового стажа
Для вычисления стажа работы (разницы между датой приема и датой увольнения/текущей датой) лучше всего подходит скрытая, но мощная функция DATEDIF. Она позволяет получить разницу в годах, месяцах или днях отдельно.
Полный стаж в формате «Годы и Месяцы»
Чаще всего в кадровых документах требуется указать стаж в полных годах и оставшихся месяцах. Для этого комбинируют два вызова функции:
=DATEDIF(дата_начала; дата_конца; "y") & " лет " & DATEDIF(дата_начала; дата_конца; "ym") & " мес."
- "y" — возвращает количество полных лет.
- "ym" — возвращает количество месяцев, оставшихся после вычета полных лет (игнорирует годы).
Функция DATEDIF не отображается в подсказках автозаполнения Excel. Ее нужно вводить вручную. Убедитесь, что дата окончания больше даты начала, иначе функция вернет ошибку #ЧИСЛО!.
Пример расчета
Данные:
- Ячейка A2: 15.04.2018 (Дата приема)
- Ячейка B2: 13.04.2026 (Текущая дата)
Формула:
=DATEDIF(A2; B2; "y") & " лет " & DATEDIF(A2; B2; "ym") & " мес."
Результат: 7 лет 11 мес.
Если требуется рассчитать стаж только в днях (например, для больничного листа), используйте код "d":
=DATEDIF(A2; B2; "d")
Защита от ошибок и пустых ячеек
При массовом расчете в таблицах часто встречаются пустые ячейки, что приводит к появлению ошибок #ЗНАЧ! или неверным результатам. Чтобы таблица выглядела аккуратно, оберните основные формулы в проверку условий.
Универсальная формула для стажа:
=ЕСЛИ(ИЛИ(A2=""; B2=""); ""; DATEDIF(A2; B2; "y") & " лет " & DATEDIF(A2; B2; "ym") & " мес.")
Эта конструкция проверяет, заполнены ли обе ячейки с датами. Если хотя бы одна пуста, формула возвращает пустую строку, иначе — проводит расчет.
Для английской версии Excel аналогичная формула:
=IF(OR(A2="", B2=""), "", DATEDIF(A2, B2, "y") & " years " & DATEDIF(A2, B2, "ym") & " months")
Частые ошибки при расчетах
-
Текстовый формат дат. Если даты введены как текст (например, "01.01.2026" с выравниванием по левому краю), функции вернут ошибку. Решение: Выделите столбец, перейдите в «Данные» -> «Текст по столбцам» и завершите мастер импорта, убедившись, что выбран формат «Дата».
-
Забытый список праздников. Использование
NETWORKDAYSбез третьего аргумента в периоды майских или новогодних праздников завысит количество рабочих дней. Решение: Создайте отдельный лист или диапазон с официальными праздничными датами текущего года и всегда ссылайтесь на него. -
Неверный порядок аргументов в DATEDIF. Если дата начала больше даты окончания, функция выдаст ошибку. Решение: Используйте функцию
МИНиМАКСвнутри формулы или проверьте логику заполнения данных.
FAQ
Как посчитать рабочие дни с учетом сегодняшней даты?
Вместо ячейки с датой окончания используйте функцию СЕГОДНЯ().
Пример: =NETWORKDAYS(A2; СЕГОДНЯ(); E2:E10) — это позволит автоматически обновлять количество отработанных дней каждый день.
Можно ли посчитать часы работы, а не дни?
Функции NETWORKDAYS считают полные дни. Для расчета часов умножьте результат на количество рабочих часов в дне (например, на 8):
=NETWORKDAYS(A2; B2) * 8
Как выделить выходные дни цветом?
Это делается через условное форматирование, а не формулами расчета. Выделите диапазон дат, создайте правило «Использовать формулу» и введите =ИЛИ(ДЕНЬНЕД(A2;2)=6; ДЕНЬНЕД(A2;2)=7) для подсветки субботы и воскресенья.