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

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

В этой статье мы разберём все возможные сценарии — от базовых формул до продвинутых техник с использованием СЕТДЕНЬ.НЕД, РАБДЕНЬ.МЕЖД и пользовательских функций. Вы узнаете, как автоматизировать расчёты для больших команд, избежать ошибок при работе с датами и даже создать динамический календарь выходных, который будет учитывать региональные праздники. Неважно, ведёте ли вы учёт для 5 или 500 сотрудников — после прочтения вы сможете настроить Excel так, чтобы он делал всю работу за вас.

Прежде чем перейти к формулам, давайте разберёмся с ключевыми понятиями:

  • 📅 Календарные дни — все дни в период, включая выходные и праздники.
  • 👔 Рабочие дни — дни, когда сотрудник должен был работать по графику (обычно пн-пт, но бывают исключения).
  • Отработанные дни — фактически отработанные дни за вычетом больничных, отпусков и других отсутствий.
  • 🚫 Нерабочие дни — выходные, праздники, дни по графику (например, у сменных работников).
📊 Для чего вам нужно считать отработанные дни?
Для начисления зарплаты
Для отчётности в налоговую
Для внутреннего учёта
Для расчёта премий
Другое

1. Базовые формулы: как посчитать разницу между датами

Начнём с самого простого — расчёта календарных дней между двумя датами. Для этого достаточно вычесть одну дату из другой. Например, если сотрудник работал с 01.01.2026 по 31.01.2026, формула будет такой:

=B2-A2

Где:

  • A2 — ячейка с датой начала периода.
  • B2 — ячейка с датой окончания периода.

Но здесь есть подводный камень: Excel хранит даты как числа (количество дней с 01.01.1900), поэтому результат будет в числовом формате. Чтобы отобразить его как дни, настройте формат ячейки:

  1. Выделите ячейку с результатом.
  2. Нажмите Ctrl+1 (или правая кнопка → Формат ячеек).
  3. Выберите категорию Общий или Числовой без десятичных знаков.

Пример: Если в A2 стоит 01.01.2026, а в B231.01.2026, формула вернёт 30 (календарных дней).

2. Учёт выходных: функция РАБДЕНЬ

Формула из предыдущего раздела не учитывает выходные дни (обычно субботу и воскресенье). Для их исключения используйте функцию РАБДЕНЬ (или NETWORKDAYS в английской версии):

=РАБДЕНЬ(A2; B2)

Эта функция автоматически исключает субботу и воскресенье. Например, для периода с 01.01.2026 (понедельник) по 31.01.2026 (среда) результат будет 22 рабочих дня (из 30 календарных).

Но что, если у вас нестандартный график? Например, выходные в воскресенье и понедельник? Тогда используйте расширенный синтаксис:

=РАБДЕНЬ.МЕЖД(A2; B2; 1; C2:C10)

Где:

  • 1 — параметр, указывающий, что выходные — воскресенье и понедельник (см. таблицу ниже).
  • C2:C10 — диапазон с датами праздников (об этом подробнее в следующем разделе).
Код выходных Дни недели Пример графика
1 Воскресенье, понедельник Торговые центры, некоторые госучреждения
2 Понедельник, вторник Редкий график, например, в некоторых странах
11 Только воскресенье Шестидневная рабочая неделя
7 Суббота, воскресенье Стандартный пятидневный график
Как узнать номер дня недели в Excel?

Используйте функцию =ДЕНЬНЕД(A2; [тип_возврата]), где [тип_возврата] может быть:

  • 1 — число от 1 (воскресенье) до 7 (суббота).
  • 2 — число от 1 (понедельник) до 7 (воскресенье).
  • 3 — число от 0 (понедельник) до 6 (воскресенье).

Пример: =ДЕНЬНЕД("01.01.2026"; 2) вернёт 1 (понедельник).

3. Учёт праздников и региональных выходных

Функция РАБДЕНЬ не учитывает государственные праздники (например, 1 мая или 9 мая в России). Чтобы их исключить, нужно передать диапазон с датами праздников в третий аргумент функции РАБДЕНЬ.МЕЖД:

=РАБДЕНЬ.МЕЖД(A2; B2; ; D2:D10)

Где D2:D10 — столбец с датами праздников. Например:

Ячейка Дата Праздник
D2 01.01.2026 Новый год
D3 07.01.2026 Рождество
D4 23.02.2026 День защитника Отечества

Важно: если праздничный день выпадает на выходной, он переносится на следующий рабочий день (например, суббота 4 ноября становится выходным в понедельник 6 ноября). В Excel этот перенос нужно учитывать вручную!

Для автоматизации можно создать отдельный лист с праздничными датами и ссылаться на него. Например:

=РАБДЕНЬ.МЕЖД(A2; B2; ; Праздники!A:A)

📌 Создать отдельный лист "Праздники"

📌 В столбец A ввести все праздничные даты на год

📌 Отформатировать столбец как "Дата"

📌 Заблокировать лист от редактирования (правый клик → "Защитить лист")

-->

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

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

Допустим:

  • A2 — дата начала периода.
  • B2 — дата окончания периода.
  • C2:C10 — диапазон с датами праздников.
  • D2:D5 — даты отпуска сотрудника.
  • E2:E3 — даты больничного.

Формула будет такой:

=РАБДЕНЬ.МЕЖД(A2; B2; ; C2:C10) - СЧЁТЕСЛИМН(D2:D5; ">="&A2; D2:D5; "<="&B2) - СЧЁТЕСЛИМН(E2:E3; ">="&A2; E2:E3; "<="&B2)

Разберём по частям:

  1. РАБДЕНЬ.МЕЖД(A2; B2; ; C2:C10) — считает рабочие дни без праздников.
  2. СЧЁТЕСЛИМН(D2:D5; ">="&A2; D2:D5; "<="&B2) — считает дни отпуска, попавшие в период.
  3. СЧЁТЕСЛИМН(E2:E3; ">="&A2; E2:E3; "<="&B2) — считает дни больничного.

Пример: Сотрудник работал с 01.01.2026 по 31.01.2026, брал отпуск с 15.01 по 19.01 (5 дней) и болел 25.01 и 26.01 (2 дня). Рабочих дней в январе — 22, минус 5 (отпуск) и 2 (больничный) = 15 отработанных дней.

5. Расчёт для неполного рабочего дня

Если сотрудник работал неполный день (например, 4 часа вместо 8), нужно учитывать это в расчётах. Здесь есть два подхода:

Способ 1: Пересчёт в полные дни

Допустим, неполный день считается как 0.5 отработанного дня. Тогда формула будет:

=РАБДЕНЬ.МЕЖД(A2; B2; ; C2:C10) - СЧЁТЕСЛИМН(D2:D5; ">="&A2; D2:D5; "<="&B2) - СЧЁТЕСЛИМН(E2:E3; ">="&A2; E2:E3; "<="&B2) + СЧЁТЕСЛИ(F2:F10; ">0")*0,5

Где F2:F10 — столбец с количеством неполных дней (например, 1 — если день неполный).

Способ 2: Учёт в часах

Если удобнее вести учёт в часах, создайте дополнительный столбец с количеством отработанных часов и используйте формулу:

=СУММ(G2:G31)/8

Где G2:G31 — часы, отработанные каждый день месяца, а 8 — стандартная продолжительность рабочего дня.

Для автоматизации можно создать табель учёта рабочего времени с формулами:

  • 📅 Столбец A — даты месяца.
  • 👔 Столбец B — тип дня (Р — рабочий, В — выходной, О — отпуск, Б — больничный).
  • Столбец C — отработанные часы.
  • 📊 Столбец D — формула для подсчёта дней: =ЕСЛИ(B2="Р"; ЕСЛИ(C2=8; 1; 0,5); 0).

6. Продвинутые техники: пользовательские функции и Power Query

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

1. Пользовательская функция на VBA

Создайте функцию, которая будет учитывать индивидуальные графики работы, смены и переносы праздников. Пример кода для подсчёта отработанных дней с учётом выходных и праздников:

Function ОтработанныеДни(ДатаНачала As Date, ДатаОкончания As Date, Праздники As Range) As Double

Dim День As Date

Dim РабочиеДни As Double

РабочиеДни = 0

For День = ДатаНачала To ДатаОкончания

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

If Weekday(День, vbMonday) < 6 Then

' Проверяем, не праздничный ли день

If Application.WorksheetFunction.CountIf(Праздники, День) = 0 Then

РабочиеДни = РабочиеДни + 1

End If

End If

Next День

ОтработанныеДни = РабочиеДни

End Function

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

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

2. Power Query для импорта данных

Если данные хранятся в внешних источниках (например, в или SQL), используйте Power Query для их импорта и преобразования:

  1. Перейдите на вкладку Данные → Получить данные → Из файла/базы данных.
  2. Загрузите данные о рабочем времени.
  3. Добавьте столбец с формулой для подсчёта отработанных дней.
  4. Обновите запрос при изменении исходных данных.

3. Динамические массивы (Excel 365)

В новых версиях Excel можно использовать функции ФИЛЬТР, СОРТ и УНИК для создания динамических отчётов. Например, чтобы получить список всех отработанных дней сотрудника за месяц:

=ФИЛЬТР(A2:A31; (ДЕНЬНЕД(A2:A31; 2) < 6)  (СЧЁТЕСЛИ(Праздники!A:A; A2:A31) = 0)  (СЧЁТЕСЛИ(Отпуска!A:A; A2:A31) = 0))
Как включить Power Query?

Если у вас Excel 2016 или новее, Power Query уже установлен. Чтобы его найти:

  • В Excel 2016: вкладка Данные → Получить и преобразовать.
  • В Excel 2019/365: вкладка Данные → Получить данные.
  • Если нет, скачайте бесплатную надстройку Power Query с сайта Microsoft.

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

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

⚠️ Внимание: Если в ячейке с датой стоит апостроф ('01.01.2026), Excel воспринимает её как текст! Удалите апостроф или используйте ДАТАЗНАЧ для преобразования: =ДАТАЗНАЧ("01.01.2026").

Ошибка 1: Неправильный формат даты

Excel может не распознать дату, если она введена в нестандартном формате (например, 1-янв-24 вместо 01.01.2026). Чтобы исправить:

  • Выделите столбец с датами.
  • Нажмите Ctrl + 1 и выберите формат Дата.
  • Если даты не преобразуются, используйте функцию =ДАТАЗНАЧ.

Ошибка 2: Пропущенные праздники

Забыли добавить перенос праздничного дня? Например, если 8 марта выпадает на субботу, выходной переносится на понедельник. В этом случае нужно вручную добавить 11.03.2026 в список праздников.

Ошибка 3: Неучтённые смены

Если у сотрудника сменный график (например, день-ночь-отдых), стандартные функции не подойдут. В этом случае:

  • Создайте отдельную таблицу с графиком смен.
  • Используйте ВПР или ИНДЕКС/ПОИСКПОЗ для определения рабочих дней.

Ошибка 4: Округление результатов

При делении часов на 8 (для пересчёта в дни) может появиться дробная часть. Чтобы избежать ошибок округления, используйте =ОКРУГЛВНИЗ или =ОКРУГЛВВЕРХ в зависимости от правил учёта в вашей компании.

⚠️ Внимание: Если вы используете РАБДЕНЬ.МЕЖД для периода, включающего текущую дату, функция может вернуть некорректный результат из-за автоматического обновления времени. Зафиксируйте дату окончания с помощью =СЕГОДНЯ()-1, если нужно учитывать только полные дни.

8. Готовые шаблоны и примеры для скачивания

Чтобы сэкономить время, вы можете использовать готовые шаблоны для расчёта отработанных дней. Вот несколько вариантов:

1. Шаблон табеля рабочего времени

Скачайте файл с готовыми формулами для учёта:

  • Автоматический подсчёт рабочих и отработанных дней.
  • Учёт отпусков, больничных и командировок.
  • График выходных (настраиваемый).

Скачать шаблон табеля (Excel)

2. Шаблон для HR-отдела

Подходит для расчёта зарплаты с учётом:

  • Окладной и почасовой оплаты.
  • Премий и удержаний.
  • Вывода данных по каждому сотруднику.

Скачать шаблон для HR (Excel)

3. Шаблон с VBA-макросами

Для продвинутых пользователей — файл с пользовательскими функциями для:

  • Автоматического импорта праздников из интернета.
  • Генерации отчётов по отделам.
  • Экспорта данных в или Бухгалтерию.

Скачать шаблон с VBA (XLSM)

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

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

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

Для скользящего графика standardные функции РАБДЕНЬ не подойдут. Вам нужно:

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

Пример формулы:

=СЧЁТЕСЛИМН(График!A:A; ">="&A2; График!A:A; "<="&B2; График!B:B; "Р") - СЧЁТЕСЛИМН(Отпуска!A:A; ">="&A2; Отпуска!A:A; "<="&B2)

Где График!B:B — столбец с пометками (Р — рабочий день, В — выходной).

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

Да, это можно сделать с помощью Power Query или VBA. Например, в Power Query:

  1. Перейдите на сайт с календарём праздников (например, КонсультантПлюс).
  2. Скопируйте таблицу с праздничными датами.
  3. В Excel: Данные → Из таблицы/диапазона (вставьте скопированные данные).
  4. Преобразуйте данные в формат даты и загрузите в лист "Праздники".

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

Как посчитать отработанные дни для внешнего совместителя, который работает 2 дня в неделю?

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

=СЧЁТЕСЛИМН(РядДат; ">="&A2; РядДат; "<="&B2; ДЕНЬНЕД(РядДат; 2); 1) + СЧЁТЕСЛИМН(РядДат; ">="&A2; РядДат; "<="&B2; ДЕНЬНЕД(РядДат; 2); 3)

Где РядДат — столбец с датами за период (можно сгенерировать с помощью ДАТА и СТРОКА).

Что делать, если в Excel неправильно считаются даты до 1900 года?

Excel для Windows использует систему дат с 01.01.1900 (в macOS — с 01.01.1904). Даты до 1900 года не поддерживаются. Если вам нужно работать с историческими данными:

  • Используйте текстовый формат (например, "01.01.1899") и обрабатывайте данные как строки.
  • Напишите пользовательскую функцию на VBA для расчёта разницы между "датами" в текстовом формате.
Как экспортировать данные об отработанных днях в 1С или Бухгалтерию?

Для экспорта в :

  1. Сформируйте отчёт в Excel с нужными столбцами (ФИО, табельный номер, отработанные дни).
  2. Сохраните файл в формате .csv (Файл → Сохранить как → CSV).
  3. В используйте обработку Загрузка данных из Excel (обычно находится в меню Сервис).

Для Бухгалтерии (например, БухСофт):

  • Используйте формат .xlsx с заранее согласованной структурой.
  • Проверьте, чтобы названия столбцов совпадали с требованиями программы.