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

Расчет отработанных дней в Microsoft Excel — одна из самых востребованных задач для кадровых специалистов, бухгалтеров и руководителей. Ошибки в таких вычислениях могут привести к неверному начислению зарплаты, искажению статистики по посещаемости или проблемам с отчетностью. В этой статье мы разберем не только базовые формулы, но и нюансы учета выходных, праздничных дней, отпусков и больничных — всё то, что делает задачу нетривиальной.

Вы узнаете, как автоматизировать процесс с помощью функций ДАТА, РАЗНДАТ, ЧИСТРАБДНИ и даже ЕСЛИ для сложных условий. Мы подробно разберем примеры для разных сценариев: от простого подсчета дней между двумя датами до учета производственного календаря с учетом региональных особенностей. А в конце статьи вас ждет шаблон готовой таблицы, который можно скачать и адаптировать под свои нужды.

1. Базовый расчет: разница между датами

Начнем с самого простого — подсчета количества дней между двумя датами. Эта задача решается с помощью функции РАЗНДАТ или простого вычитания. Например, если сотрудник работал с 01.06.2026 по 30.06.2026, то количество календарных дней можно посчитать так:

=РАЗНДАТ("01.06.2026"; "30.06.2026"; "d")

Или еще проще:

=ДАТА(2026;6;30)-ДАТА(2026;6;1)

Однако такой подход учитывает все календарные дни, включая выходные и праздники. Для большинства задач это не подходит — ведь сотрудник фактически не работал в субботу и воскресенье. Чтобы исключить выходные, используйте функцию ЧИСТРАБДНИ:

=ЧИСТРАБДНИ("01.06.2026"; "30.06.2026")
📊 Какой способ расчета отработанных дней вы используете чаще?
Ручной подсчет
Формулы Excel
Специализированные программы
Не считаю вообще

2. Учет праздничных дней: функция ЧИСТРАБДНИ.МЕЖД

Функция ЧИСТРАБДНИ игнорирует только субботы и воскресенья, но не учитывает государственные праздники. Например, 1 мая или 9 мая в России являются нерабочими днями, даже если они выпадают на будний день. Для таких случаев существует расширенная версия — ЧИСТРАБДНИ.МЕЖД, где можно указать список праздников.

Сначала создайте на отдельном листе таблицу с датами праздников (например, в диапазоне A2:A10). Затем используйте формулу:

=ЧИСТРАБДНИ.МЕЖД("01.06.2026"; "30.06.2026"; Лист2!A2:A10)

Важно: если праздничный день выпадает на выходной, он переносится на следующий рабочий день. Например, если 1 мая — это среда, то выходной переносится на четверг. В Excel это нужно учитывать вручную или использовать производственный календарь с уже учтенными переносами.

⚠️ Внимание: В разных странах и даже регионах России список праздничных дней может отличаться. Например, в Татарстане дополнительным выходным является День Республики (30 августа), а в Москве — нет. Всегда уточняйте актуальный производственный календарь для вашего региона.

Создать столбец с датами начала и конца периода|Подготовить список праздничных дней на отдельном листе|Проверить формат ячеек (должен быть "Дата")|Учесть региональные особенности праздников-->

3. Учет больничных, отпусков и других отсутствий

Если сотрудник брал больничный, отпуск за свой счет или находился в командировке, эти дни нужно исключить из расчета отработанных. Допустим, у вас есть таблица с датами отсутствий в диапазоне B2:B20. Тогда формула примет вид:

=ЧИСТРАБДНИ.МЕЖД("01.06.2026"; "30.06.2026"; Лист2!A2:A10) - СЧЁТЕСЛИМН(B2:B20; ">="&"01.06.2026"; B2:B20; "<="&"30.06.2026")

Здесь СЧЁТЕСЛИМН подсчитывает количество дней отсутствия, которые попадают в анализируемый период. Если у вас есть отдельные столбцы для разных типов отсутствий (например, больничный, отпуск, командировка), формулу можно усложнить:

=ЧИСТРАБДНИ.МЕЖД(НачДаты; КонДаты; Праздники) - СЧЁТЕСЛИМН(Больничные; ">="&НачДаты; Больничные; "<="&КонДаты) - СЧЁТЕСЛИМН(Отпуска; ">="&НачДаты; Отпуска; "<="&КонДаты)

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

Тип отсутствия Формула для подсчета Пример
Больничный =СЧЁТЕСЛИМН(ДиапазонБольничных; ">="&НачДаты; ДиапазонБольничных; "<="&КонДаты) =СЧЁТЕСЛИМН(C2:C100; ">="&A2; C2:C100; "<="&B2)
Отпуск =СЧЁТЕСЛИМН(ДиапазонОтпусков; ">="&НачДаты; ДиапазонОтпусков; "<="&КонДаты) =СЧЁТЕСЛИМН(D2:D100; ">="&A2; D2:D100; "<="&B2)
Командировка =СУММПРОИЗВ(--(ДиапазонКомандировок>=НачДаты); --(ДиапазонКомандировок<=КонДаты)) =СУММПРОИЗВ(--(E2:E100>=A2); --(E2:E100<=B2))

4. Расчет отработанных дней за месяц с учетом неполного рабочего дня

Иногда сотрудник может работать неполный день (например, на 0.5 ставки или с гибким графиком). В таких случаях нужно учитывать не только количество дней, но и фактическую загрузку. Допустим, у вас есть столбец с коэффициентом занятости (например, 0.5 для половины ставки). Тогда формула будет такой:

=ЧИСТРАБДНИ.МЕЖД(НачДаты; КонДаты; Праздники) * КоэффициентЗанятости

Если коэффициент меняется в зависимости от дня (например, в понедельник — полный день, а в остальные дни — половина), то потребуется более сложная логика с использованием функции ВПР или ИНДЕКС/ПОИСКПОЗ для поиска индивидуального коэффициента для каждой даты.

Пример для гибкого графика:

=СУММПРОИЗВ(--(ДиапазонДат>=НачДаты); --(ДиапазонДат<=КонДаты); --(НЕТ(ПОИСКПОЗ(ДиапазонДат; Праздники; 0))); --(НЕТ(ПОИСКПОЗ(ДЕНЬНЕД(ДиапазонДат); {6;7}; 0))); КоэффициентыЗанятости)

Здесь КоэффициентыЗанятости — это столбец с значениями от 0 до 1, соответствующими каждой дате в ДиапазонДат.

Как учесть переработки?

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

=ОтработанныеДни + (СверхурочныеЧасы / 8)

5. Автоматизация с помощью Power Query

Для крупных компаний с сотнями сотрудников ручной подсчет отработанных дней может стать утомительным. В этом случае на помощь приходит Power Query — инструмент для преобразования и загрузки данных. С его помощью можно:

  • 📅 Импортировать данные о выходных и праздничных днях из внешних источников (например, с сайта правительства).
  • 🔄 Автоматически обновлять производственный календарь при изменении законодательства.
  • 📊 Объединять данные из разных источников (например, табеля учета рабочего времени и календаря отпусков).
  • 📈 Строить динамические отчеты по отработанным дням с разбивкой по отделам или проектам.

Пример запроса в Power Query для подсчета отработанных дней:

  1. Импортируйте таблицу с датами работы сотрудников.
  2. Добавьте столбец с проверкой на выходной: = if Date.DayOfWeek([Date]) = 6 or Date.DayOfWeek([Date]) = 0 then 0 else 1.
  3. Добавьте столбец с проверкой на праздники (используйте список праздников как отдельную таблицу).
  4. Сложите значения из этих столбцов для каждой даты.

Готовый запрос можно сохранить и обновлять одним кликом при изменении исходных данных.

⚠️ Внимание: При использовании Power Query убедитесь, что формат дат в исходных данных соответствует формату в Excel. Например, если даты импортируются как текст (например, "01.06.2026"), их нужно преобразовать в формат даты с помощью функции Date.From.

6. Готовые шаблоны и надстройки для Excel

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

  • 📄 Шаблоны табеля учета рабочего времени — можно скачать на сайтах Microsoft Office или специализированных ресурсах (например, PlanFix или Битрикс24).
  • 🛠️ Надстройки для Excel — например, Kutools for Excel или Ablebits имеют встроенные функции для работы с датами и календарями.
  • 🌐 Облачные сервисыGoogle Sheets с функцией NETWORKDAYS (аналог ЧИСТРАБДНИ) или специализированные HR-системы (Zoho People, BambooHR).

Пример надстройки Kutools for Excel:

  1. Установите надстройку через Файл → Параметры → Надстройки → Перейти.
  2. Выделите диапазон с датами.
  3. В меню Kutools выберите Формулы → Дата и время → Рабочие дни между двумя датами.
  4. Укажите диапазон с праздничными днями и получите результат.

Преимущество надстроек — они часто имеют более удобный интерфейс и дополнительные функции (например, визуализацию данных или экспорт в другие форматы). Однако их использование может потребовать покупки лицензии.

FAQ: Частые вопросы о расчете отработанных дней

Как посчитать отработанные дни, если сотрудник работал по сменному графику (например, 2 через 2)?

Для сменного графика нужно создать отдельную таблицу с расписанием смен для каждого сотрудника. Затем используйте функцию СУММПРОИЗВ с условиями, которые учитывают только рабочие смены. Пример:

=СУММПРОИЗВ(--(ДиапазонДат>=НачДаты); --(ДиапазонДат<=КонДаты); --(ДиапазонСмен="Рабочая"))

Где ДиапазонСмен — это столбец с пометками "Рабочая" или "Выходной" для каждой даты.

Можно ли автоматически подтягивать праздничные дни из интернета?

Да, это можно сделать с помощью Power Query или макросов на VBA. Например, можно написать скрипт, который парсит данные с сайта КонсультантПлюс или официального портала правительства. Однако такой подход требует навыков программирования и может нарушать условия использования некоторых сайтов. Альтернатива — ручной импорт данных один раз в год при обновлении производственного календаря.

Как учесть ночные смены, которые пересекают полуночь (например, с 22:00 до 06:00)?

В этом случае одна смена может относиться к двум разным календарным дням. Решение:

  1. Создайте столбец с точным временем начала и конца смены.
  2. Используйте функцию ЦЕЛОЕ для округления до полных дней или считайте часы отдельно.
  3. Для точного подсчета рабочего времени используйте формулу:
    =ЕСЛИ(КонецСмены < НачалоСмены; (КонецСмены + 1) - НачалоСмены; КонецСмены - НачалоСмены)

    где НачалоСмены и КонецСмены — это даты со временем в формате Excel.

Что делать, если в Excel неправильно отображаются даты (например, вместо 01.06.2026 показывает 45423)?

Это означает, что ячейки имеют общий формат вместо формата Дата. Чтобы исправить:

  1. Выделите проблемные ячейки.
  2. Нажмите правой кнопкой мыши и выберите Формат ячеек.
  3. Вкладка Число → выберите Дата и нужный формат (например, 14.03.2012).
  4. Если даты хранятся как текст, используйте функцию ДАТАЗНАЧ для преобразования.

Также проверьте региональные настройки Excel (в России по умолчанию используется формат ДД.ММ.ГГГГ, а в США — ММ/ДД/ГГГГ).

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

Используйте функцию СРЗНАЧ для диапазона с результатами по каждому сотруднику. Например:

=СРЗНАЧ(C2:C100)

Где C2:C100 — это столбец с количеством отработанных дней для каждого сотрудника. Для более детального анализа можно использовать СРЗНАЧЕСЛИ, чтобы посчитать среднее только для определенной должности или отдела:

=СРЗНАЧЕСЛИ(C2:C100; A2:A100; "Менеджер")

Где A2:A100 — это столбец с должностями.