Расчет рабочих дней и трудового стажа в Excel

Иван Корнев·12.04.2026·4 мин

Чтобы посчитать количество рабочих дней между двумя датами или определить трудовой стаж сотрудника в годах и месяцах, используйте встроенные функции NETWORKDAYS (для дней) и DATEDIF (для стажа). Эти инструменты автоматически исключают выходные и позволяют учитывать список государственных праздников, что критически важно для точного табеля учета рабочего времени и кадровых отчетов.

Основные функции для работы с датами

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

ФункцияНазначениеКлючевой параметр
NETWORKDAYSСчитает кол-во рабочих дней между датамиИсключает сб/вс по умолчанию
NETWORKDAYS.INTLСчитает рабочие дни с гибким графикомПозволяет задать любые выходные
WORKDAYВычисляет дату окончания срокаПрибавляет рабочие дни к старту
DATEDIFРассчитывает разницу между датамиВозвращает годы, месяцы или дни

Функция DATEDIF не отображается в списке подсказок Excel при вводе, но работает корректно. Просто вводите её название вручную.

Как посчитать количество рабочих дней

Самая частая задача — узнать, сколько полных рабочих дней содержится в периоде от даты начала до даты конца.

Стандартный график (выходные: суббота и воскресенье)

Используйте функцию NETWORKDAYS. Синтаксис прост: =NETWORKDAYS(начальная_дата; конечная_дата; [праздники])

Пример: Если дата начала в ячейке A2, а дата окончания в B2:

=NETWORKDAYS(A2; B2)

Эта формула вернет число дней, исключая все субботы и воскресенья внутри периода. Даты начала и конца включаются в расчет как рабочие дни (если они не выпадают на выходной).

Учет государственных праздников

Для точного производственного календаря необходимо исключить праздничные дни. Создайте отдельный диапазон ячеек (например, E2:E15), куда внесите даты праздников.

Формула:

=NETWORKDAYS(A2; B2; E2:E15)

Теперь результат будет уменьшен на количество праздников, попавших в указанный период.

Убедитесь, что даты в списке праздников имеют формат «Дата», а не текст. Иначе функция их проигнорирует, и расчет будет неверным.

Настройка нестандартных выходных (NETWORKDAYS.INTL)

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

Она позволяет задать код выходных дней третьим аргументом. Код может быть числом (от 1 до 17) или строкой из семи символов («0» — рабочий, «1» — выходной), начиная с понедельника.

Примеры кодов:

  • "0000011" — выходные суббота и воскресенье (стандарт).
  • "0000001" — выходной только воскресенье.
  • "1111110" — выходной только понедельник.
  • "0000111" — выходные четверг, пятница и суббота.

Формула для графика с одним выходным (воскресенье):

=NETWORKDAYS.INTL(A2; B2; "0000001"; E2:E15)

Здесь A2 и B2 — период, "0000001" — настройка выходных, E2:E15 — список праздников.

Расчет трудового стажа

Для кадровой отчетности часто требуется вывести стаж в формате «Х лет Y месяцев». Стандартное вычитание дат здесь не подойдет, так как даст результат в днях. Используйте скрытую, но мощную функцию DATEDIF.

Формула полного стажа (Годы + Месяцы)

Чтобы получить строку вида «5 лет 3 мес», объедините два вызова функции:

=DATEDIF(A2; TODAY(); "Y") & " лет " & DATEDIF(A2; TODAY(); "YM") & " мес"

Где:

  • A2 — дата приема на работу.
  • TODAY() — текущая дата (можно заменить на дату увольнения).
  • "Y" — возвращает количество полных лет.
  • "YM" — возвращает количество месяцев без учета лет (остаток).

Детализация до дней

Если нужна максимальная точность (например, для расчета больничных или отпусков):

=DATEDIF(A2; TODAY(); "Y") & " лет " & DATEDIF(A2; TODAY(); "YM") & " мес " & DATEDIF(A2; TODAY(); "MD") & " дн"

Параметр "MD" показывает количество дней без учета полных месяцев и лет.

Если дата увольнения еще не наступила, используйте функцию СЕГОДНЯ() (TODAY()). Если сотрудник уволен, замените её на ссылку на ячейку с датой увольнения.

Определение даты окончания работ (WORKDAY)

Часто нужно не посчитать дни, а узнать дату: «Если мы начнем проект сегодня и он займет 20 рабочих дней, когда мы закончим?». Для этого служит функция WORKDAY.

Формула:

=WORKDAY(начальная_дата; кол-во_дней; [праздники])

Пример: Начало в A2, длительность 10 дней, праздники в E2:E10:

=WORKDAY(A2; 10; E2:E10)

Результатом будет конкретная дата завершения. Функция автоматически «перепрыгнет» через выходные и праздники. Для нестандартных графиков используйте WORKDAY.INTL с аналогичными кодами выходных, как в NETWORKDAYS.INTL.

Частые ошибки при расчетах

  1. Ошибка #ЗНАЧ! (#VALUE!): Возникает, если в ячейках с датами хранится текст. Проверьте формат ячеек (должен быть «Дата») и убедитесь, что разделители в датах соответствуют настройкам системы.
  2. Отрицательный результат: Если дата окончания меньше даты начала, функции вернут ошибку или отрицательное число. Всегда проверяйте порядок дат.
  3. Игнорирование праздников: Самая распространенная ошибка в табелях. Забывая указать третий аргумент (диапазон праздников), вы завышаете количество рабочих дней.
  4. Неверный код региона: В NETWORKDAYS.INTL легко перепутать порядок дней в строке кода. Помните: первый символ — это понедельник, последний — воскресенье.

FAQ

Можно ли посчитать стаж только в месяцах? Да. Используйте формулу =DATEDIF(A2; TODAY(); "M"). Она вернет общее количество полных месяцев между датами.

Как сделать список праздников динамическим? Преобразуйте диапазон с праздниками в «Умную таблицу» (Ctrl+T). Тогда при добавлении нового праздника формула автоматически подхватит новую строку, если вы используете ссылку на столбец таблицы (например, Table1[Праздники]).

Что делать, если дата начала позже даты конца? Функции NETWORKDAYS и DATEDIF требуют, чтобы первая дата была раньше второй. Если порядок может меняться, оберните формулу в проверку: =ЕСЛИ(A2>B2; NETWORKDAYS(B2; A2); NETWORKDAYS(A2; B2)).