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

Почему стандартное вычитание времени в Excel даёт сбои

Вы когда-нибудь пытались вычесть время начала рабочего дня из времени его окончания, но получали странные результаты? Например, вместо 8 часов Excel показывал ###### или отрицательное значение? Это происходит потому, что программа по умолчанию воспринимает время как часть суток (от 0 до 24 часов), а не как продолжительность. Если смена пересекает полночь — например, с 20:00 до 04:00 — простая формула =B2-A2 даст ошибку.

Ещё одна ловушка: Excel не учитывает автоматически перерывы на обед, ночные надбавки или выходные дни. Без дополнительных формул вы получите "сырые" данные, которые придётся корректировать вручную. А если в таблице сотни строк? Здесь и пригодятся специализированные функции — от простого МАКС до сложных конструкций с ЕСЛИ и ВРЕМЯ.

Способ 1: Базовый расчёт рабочих часов без перерывов

Начнём с самого простого — подсчёта чистого рабочего времени, когда смена не пересекает полночь и перерывов нет. Предположим, у вас есть таблица с колонками Начало (ячейка A2) и Конец (ячейка B2). Формула будет такой:

=ЕСЛИ(B2

Почему +1? Это исправляет ошибку при пересечении полуночи. Например, если смена с 22:00 до 06:00, Excel без +1 покажет -16 часов вместо 8 часов. Формат ячейки с результатом обязательно установите как [ч]:мм (через Формат ячеек → Время).

  • ✅ Работает для смен длительностью до 24 часов
  • ✅ Не требует дополнительных столбцов
  • ❌ Не учитывает перерывы и обеды
  • ❌ Не подходит для многосуточных смен
📊 Как часто вам нужно считать рабочие часы с учётом ночных смен?
Ежедневно
Несколько раз в неделю
Редко
Никогда

Способ 2: Учёт перерывов на обед и отдых

Допустим, у сотрудников фиксированный перерыв на обед — 1 час. Или переменный, указанный в отдельном столбце. В первом случае формула упрощается:

=ЕСЛИ(B2

Если длительность перерыва указана в ячейке C2 (например, 0:30 для 30 минут), используйте:

=ЕСЛИ(B2

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

Убедитесь, что время начала и конца в формате ч:мм|Проверьте формат ячейки с перерывом (ч:мм)|Установите формат результата как [ч]:мм|Проверьте, нет ли отрицательных значений в столбце с перерывами-->

⚠️ Внимание: Если в ячейке с перерывом стоит 0:00, Excel воспримет это как полночь, а не как отсутствие перерыва. Чтобы избежать ошибок, используйте =ЕСЛИ(C2=0; формула_без_перерыва; формула_с_перерывом).

Способ 3: Расчёт ночных часов (с 22:00 до 06:00)

Для многих профессий (охранники, врачи, IT-специалисты) ночные часы оплачиваются по повышенному тарифу. Чтобы их выделить, понадобится формула с МАКС и МИН. Предположим, ночной период — с 22:00 до 06:00, а смена длится с A2 до B2:

=МАКС(0; МИН(B2; ВРЕМЯ(6;0;0)) - МАКС(A2; ВРЕМЯ(22;0;0)))

Как это работает:

  1. Функция ВРЕМЯ(22;0;0) создаёт метку 22:00.
  2. МАКС(A2; ВРЕМЯ(22;0;0)) определяет, когда начался ночной период: с начала смены или с 22:00.
  3. МИН(B2; ВРЕМЯ(6;0;0)) находит конец ночного периода: конец смены или 06:00.
  4. МАКС(0; ...) убирает отрицательные значения, если ночных часов нет.

Начало смены Конец смены Ночные часы Формула
20:00 04:00 6:00 =МАКС(0; МИН("4:00";ВРЕМЯ(6;0;0))-МАКС("20:00";ВРЕМЯ(22;0;0)))
23:00 07:00 7:00 =МАКС(0; МИН("7:00";ВРЕМЯ(6;0;0))-МАКС("23:00";ВРЕМЯ(22;0;0)))
08:00 17:00 0:00 =МАКС(0; МИН("17:00";ВРЕМЯ(6;0;0))-МАКС("8:00";ВРЕМЯ(22;0;0)))

Способ 4: Автоматический учёт выходных и праздников

Чтобы исключить из расчёта выходные дни (например, субботу и воскресенье), добавьте проверку с ДЕНЬНЕД. Формула станет такой:

=ЕСЛИ(ИЛИ(ДЕНЬНЕД(A2;2)>5; ДЕНЬНЕД(B2;2)>5); 0; ЕСЛИ(B2

Здесь ДЕНЬНЕД(A2;2) возвращает номер дня недели (1 — понедельник, 7 — воскресенье). Параметр 2 указывает, что неделя начинается с понедельника. Если начало или конец смены приходятся на выходной (>5), формула возвращает 0.

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

=ЕСЛИ(ИЛИ(СЧЁТЕСЛИ($D$2:$D$100;A2)>0; СЧЁТЕСЛИ($D$2:$D$100;B2)>0); 0; ЕСЛИ(B2
⚠️ Внимание: Если смена начинается в пятницу 22:00 и заканчивается в субботу 06:00, стандартная формула посчитает её как выходную. Чтобы этого избежать, проверяйте дату начала смены, а не только день недели: =ЕСЛИ(ДЕНЬНЕД(A2;2)>5; 0; ...).

Способ 5: Расчёт рабочих часов за месяц с учётом графика

Для ежемесячных отчётов удобно использовать сводные таблицы или функцию СУММЕСЛИМН. Предположим, у вас есть таблица с датами, временем начала/конца и ФИО сотрудника. Чтобы посчитать общие часы за месяц для Иванова И.И.:

=СУММЕСЛИМН(Диапазон_с_часами; Диапазон_с_ФИО; "Иванов И.И."; Диапазон_с_датами; ">="&ДАТА(2026;5;1); Диапазон_с_датами; "<="&ДАТА(2026;5;31))

Где:

  • Диапазон_с_часами — столбец с результатами расчёта часов (из предыдущих формул).
  • Диапазон_с_ФИО — столбец с именами сотрудников.
  • Диапазон_с_датами — столбец с датами смен.

Критичная деталь: если в диапазоне с часами есть ячейки с ошибками (например, #ЗНАЧ!), СУММЕСЛИМН проигнорирует их. Чтобы учесть все записи, предварительно исправьте ошибки или используйте формулу массива с ЕСЛИОШИБКА.

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

Используйте формулу массива (вводится через Ctrl+Shift+Enter в старых версиях Excel):

=СУММ(ЕСЛИОШИБКА(Диапазон_с_часами;0))

Это заменит все ошибки на 0, и СУММЕСЛИМН сработает корректно.

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

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

  1. Формат ячеек. Если время введено как текст (например, 14.30 вместо 14:30), формулы не сработают. Проверьте формат через Формат ячеек → Время.
  2. Отрицательные значения. При вычитании времени Excel может показывать ######. Решение: установите формат [ч]:мм или используйте ЕСЛИ для обработки.
  3. Пересечение дат. Если смена длится несколько дней (например, с 08:00 1 мая до 08:00 2 мая), простая разность даст 0. Решение: добавьте проверку на смену даты.
  4. Разные часовые пояса. Если данные вводятся в разных поясах, приведите всё к одному стандарту (например, UTC) перед расчётами.

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

=И(B2

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

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

Используйте формулу с учётом даты: =ЕСЛИ(B2, где B2 и A2 — ячейки с датой и временем (например, 01.05.2026 08:00). Формат результата установите как общий или числовой.

Можно ли автоматически выделять ночные часы цветом?

Да, через условное форматирование. Выделите столбец с часами, выберите Условное форматирование → Создать правило → Использовать формулу и введите:

=И(A2>=ВРЕМЯ(22;0;0); A2<=ВРЕМЯ(6;0;0))

Где A2 — ячейка с временем начала смены. Настройте формат (например, жёлтый фон).

Как посчитать часы с учётом 30-минутного обеда после 4 часов работы?

Это требует вложенных условий. Пример формулы:

=ЕСЛИ(B2-A2>="4:00"; ЕСЛИ(B2

Здесь проверяется, превышает ли длительность смены 4 часа. Если да — вычитается 30 минут.

Почему Excel показывает ###### вместо времени?

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

Как экспортировать расчёт рабочих часов в бухгалтерскую программу?

Скопируйте итоговую таблицу с часами в новый лист, затем сохраните как CSV (Файл → Сохранить как → CSV). Убедитесь, что:

  • Время представлено в часах (например, 8 вместо 8:00).
  • Нет объединённых ячеек.
  • Заголовки столбцов соответствуют требованиям бухгалтерской программы.