Расчёт отработанного времени в Excel: формулы, примеры и автоматизация

Учёт рабочего времени — критически важная задача для бухгалтеров, кадровиков и руководителей. Даже небольшая ошибка в расчётах может привести к конфликтам с сотрудниками, штрафам от трудовой инспекции или переплате по зарплате. Excel остаётся одним из самых гибких инструментов для ведения табелей, но многие пользователи сталкиваются с проблемами: как правильно вычесть обеденные перерывы, учесть ночные часы или автоматически посчитать переработки?

В этой статье вы найдёте не только базовые формулы для расчёта отработанного времени, но и готовые решения для сложных сценариев: сменный график, ненормированный день, командировки. Мы разберём типичные ошибки (например, почему 23:59 - 00:01 даёт неверный результат) и покажем, как избежать ручного ввода с помощью Power Query и VBA. А в конце — шаблон табеля, который можно скачать и адаптировать под свои нужды.

Если вы никогда не работали с временем в Excel, начните с первого раздела — там объяснено, как преобразовать текстовые данные (например, «8:30») в числовой формат, который программа «понимает». Опытные пользователи могут сразу перейти к разделам про сменные графики или автоматизацию.

📊 Как вы обычно ведёте учёт рабочего времени?
В Excel
В специализированной программе (1С, БОСС-Кадровик)
На бумаге
Другое

Базовые формулы: как вычесть время прихода и ухода

Самая простая задача — посчитать, сколько часов сотрудник провёл на работе, зная время прихода и ухода. Например, если Иван пришёл в 09:15, а ушёл в 18:45, как узнать продолжительность его рабочего дня?

В Excel для этого используется обычная формула вычитания: =B2-A2, где A2 — время прихода, а B2 — время ухода. Но здесь есть два критичных нюанса:

  1. Ячейки с временем ДОЛЖНЫ иметь формат «Время»** (а не «Общий» или «Текстовый»). Чтобы изменить формат, выделите ячейки → правая кнопка → Формат ячеек → категория Время.
  2. Если результат отображается как дата (например, «01.01.1900 9:30»), снова измените формат ячейки с результатом на Время или [ч]:мм (для отображения полных часов).

Пример для ячеек с форматом [ч]:мм:

Приход (A)Уход (B)ФормулаРезультат
09:1518:45=B2-A29:30
08:0017:30=B3-A39:30
22:0006:00=ЕСЛИ(B48:00

Обратите внимание на третью строку: если сотрудник ушёл на следующий день (ночная смена), простая формула =B4-A4 даст ошибку. Здесь нужна функция ЕСЛИ, которая проверяет, не меньше ли время ухода времени прихода. Подробнее об этом — в следующем разделе.

⚠️ Внимание: Если в ячейках с временем стоят апострофы (например, '09:15), Excel воспринимает их как текст. Удалите апострофы или используйте функцию =ВРЕМЗНАЧ() для преобразования.

Как вычесть обеденный перерыв и другие нерабочие периоды

В большинстве компаний предусмотрен обеденный перерыв (обычно 30–60 минут), который не входит в отработанное время. Чтобы его учесть, модифицируйте формулу:

= (Время_ухода - Время_прихода) - Длительность_перерыва

Например, если перерыв всегда 1 час, формула будет такой: = (B2-A2) - ВРЕМЯ(1;0;0).

Но что делать, если длительность перерыва зависит от отработанных часов? Например, при смене до 6 часов перерыв не положен, а при смене свыше 8 часов — 1,5 часа. Здесь поможет вложенная функция ЕСЛИ:

= (B2-A2) -

ЕСЛИ(

(B2-A2) <= ВРЕМЯ(6;0;0); 0;

ЕСЛИ(

(B2-A2) > ВРЕМЯ(8;0;0); ВРЕМЯ(1;30;0);

ВРЕМЯ(1;0;0)

)

)

  • 📌 ВРЕМЯ(часы; минуты; секунды) — функция для создания временного значения. Например, ВРЕМЯ(1;30;0) = 1 час 30 минут.
  • ⏱️ Чтобы сравнить время с числом часов, используйте ВРЕМЯ(8;0;0), а не просто 8.
  • 🔄 Если перерывы фиксированные, лучше вынести их длительность в отдельную ячейку и ссылаться на неё в формуле.

Установить формат ячеек «Время» для прихода/ухода|Проверить отсутствие апострофов в данных|Выделить отдельный столбец для длительности перерыва|Использовать функцию ЕСЛИ для гибких перерывов-->

Ночные смены и пересечение полуночи: почему 23:59 - 00:01 = ошибка

Одна из самых распространённых ошибок при расчёте времени — неверная обработка ночных смен. Если сотрудник пришёл в 22:00, а ушёл в 06:00, простая формула =B2-A2 вернёт -16:00 (отрицательное значение). Это происходит потому, что Excel воспринимает время как часть суток: 06:00 для него «меньше», чем 22:00.

Решений здесь три:

  1. Добавить 1 день к времени ухода, если оно меньше времени прихода:
    =ЕСЛИ(B2
  2. Использовать функцию МОД() (остаток от деления):
    =МОД(B2-A2;1)

    Эта формула автоматически «переносит» время на следующие сутки.

  3. Преобразовать время в десятичные доли суток и вычесть:
    =(B2-A2)*24

    Затем отформатировать ячейку как Общий или Числовой.

Для ночных смен также важно учитывать оплату ночных часов (с 22:00 до 06:00). Чтобы посчитать их количество, используйте:

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

Эта формула вернёт продолжительность ночных часов. Умножьте результат на коэффициент (например, 1,2 для 20% надбавки).

⚠️ Внимание: При использовании МОД() результат будет в формате времени (например, 08:00 вместо 8). Чтобы получить часы в числовом виде, умножьте на 24: =МОД(B2-A2;1)*24.
Почему нельзя просто сложить часы до и после полуночи?

Если разбить смену 22:00–06:00 на два периода (22:00–24:00 и 00:00–06:00) и сложить их, результат будет корректным. Однако этот метод требует ручного разделения данных и не подходит для автоматизации. Кроме того, при большом объёме данных возрастает риск ошибок при копировании формул.

Учёт переработок и ненормированного дня

Переработка — это время, отработанное сверх нормы (обычно 8 часов в день или 40 часов в неделю). Чтобы его посчитать, нужно:

  1. Определить норму рабочего времени (например, 8 часов/день).
  2. Вычесть норму из фактически отработанного времени.
  3. Учесть, что переработка считается только по итогам месяца (если в один день недоработка, а в другой — переработка, они могут компенсировать друг друга).

Формула для ежедневной переработки:

=МАКС(0; (B2-A2-Перерыв) - Норма_часов)

Где Норма_часов — это 8 (или другое значение из трудового договора). Функция МАКС(0; ...) нужна, чтобы не учитывать отрицательные значения (недоработки).

Для расчёта совокупной переработки за месяц:

  1. Посчитайте фактически отработанное время за месяц (сумма по всем дням).
  2. Посчитайте норму за месяц (например, 20 рабочих дней × 8 часов = 160 часов).
  3. Вычтите норму из факта: =СУММ(Отработано) - Норма_месяц.
  • 📅 Для нормы месяца используйте функцию ЧИСТРАБДНИ(), чтобы автоматически учитывать выходные:
    =ЧИСТРАБДНИ(Дата_начала; Дата_конца) * Норма_день
  • ⚖️ Переработка может компенсироваться отгулами или оплатой в двойном размере — это зависит от внутренних правил компании.
  • 🔄 Если у вас сменный график, норма часов может отличаться по дням (например, 12 часов в сутки при вахтовом методе).

Сложные графики: сменный режим, вахта, гибкий график

Если сотрудники работают по сменам (например, «день-ночь-отдых») или вахтовым методом, стандартные формулы не подойдут. Здесь нужны:

  • 📊 Отдельные столбцы для каждой смены (утренняя, вечерняя, ночная).
  • 🔄 Функции для проверки типа смены (например, ЕСЛИ() или ВЫБОР()).
  • 📅 Учёт графиков выходов (например, «2 через 2»).

Пример таблицы для сменного графика:

ДатаСменаПриходУходОтработаноНочные часы
01.06.2026День08:0020:00=МОД(D2-C2;1)=МАКС(0;МИН(D2;ВРЕМЯ(6;0;0))-МАКС(C2;ВРЕМЯ(22;0;0)))
02.06.2026Ночь20:0008:00=ЕСЛИ(D3=МОД(D3-C3;1)
03.06.2026Выходной--00

Для вахтового метода (например, 30 дней работы / 30 дней отдыха) удобно использовать:

  • Функцию ДЕНЬНЕД() для определения выходных.
  • Условное форматирование, чтобы выделять цветом рабочие и нерабочие дни.
  • Сводные таблицы для анализа отработанного времени по периодам.

Если график повторяется (например, «5 через 2»), создайте шаблон на неделю и протяните его на нужный период. Для автоматизации можно написать макрос на VBA, который будет заполнять график на основе правила (например, «через день»).

⚠️ Внимание: При сменном графике обязательно проверяйте, чтобы сумма отработанных часов за месяц не превышала норму по Трудовому кодексу (например, 120 часов за месяц при 30-часовой неделе).

Автоматизация: Power Query и VBA для табелей

Если вам приходится ежемесячно заполнять табели вручную, стоит автоматизировать процесс. Два основных инструмента в Excel:

Power Query (для импорта и преобразования данных)

С помощью Power Query можно:

  • 📤 Импортировать данные из файлов (например, отметки с турникетов).
  • 🔄 Преобразовывать текстовые данные в формат времени.
  • 🧹 Удалять дубликаты и ошибки.

Пример запроса для преобразования текста «08:30» в время:

  1. Загрузите данные в Power Query (Данные → Получить данные → Из файла).
  2. Выделите столбец с временем → Преобразовать → Формат → Время.
  3. Замените ошибки (например, пустые ячейки) на 00:00.

VBA (для создания макросов)

С помощью VBA можно:

  • ⏱️ Автоматически рассчитывать отработанное время по шаблону.
  • 📅 Генерировать графики смен на месяц.
  • 📤 Экспортировать данные в бухгалтерскую программу.

Пример макроса для расчёта времени с учётом перерывов:

Sub CalculateWorkTime()

Dim ws As Worksheet

Dim lastRow As Long

Set ws = ThisWorkbook.Sheets("Табель")

lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

For i = 2 To lastRow

If ws.Cells(i, 2).Value <> "" And ws.Cells(i, 3).Value <> "" Then

ws.Cells(i, 4).Value = (ws.Cells(i, 3).Value - ws.Cells(i, 2).Value) - TimeValue("01:00")

ws.Cells(i, 4).NumberFormat = "[h]:mm"

End If

Next i

End Sub

Этот макрос проходит по всем строкам листа «Табель» и рассчитывает отработанное время за вычетом 1 часа на перерыв.

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

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

  • Неправильный формат ячеек: время хранится как текст (например, из-за апострофов или импорта из другой системы). Решение: используйте =ВРЕМЗНАЧ() или Power Query для преобразования.
  • 🔢 Округление времени: Excel может округлять секунды, что приводит к погрешностям. Решение: установите формат ячейки с большим количеством знаков после запятой (например, [ч]:мм:сс.00).
  • 📅 Игнорирование переходов на зимнее/летнее время (если актуально для вашего региона). Решение: проверяйте данные за март и октябрь.
  • 🔄 Копирование формул с относительными ссылками, из-за чего ссылки «съезжают». Решение: фиксируйте столбцы и строки знаком $ (например, $A2).

Ещё одна частая проблема — некорректный расчёт при пересечении полуночи. Например, если сотрудник ушёл в 00:15, а формула не учитывает переход на новые сутки. Проверяйте такие случаи вручную или используйте функцию МОД(), как описано выше.

Также обратите внимание на разницу между «рабочим временем» и «календарным временем»**:

  • 🕒 Календарное время — это просто разница между приходом и уходом.
  • Рабочее время — календарное время минус перерывы, минус нерабочие периоды (например, обед).
⚠️ Внимание: Если вы используете СУММ() для сложения времени, результат может отображаться некорректно (например, 25:30 вместо 1:30). Чтобы исправить это, измените формат ячейки на [ч]:мм.

Часто задаваемые вопросы

Как посчитать отработанное время, если данные приходят в формате «08ч30м»?

Используйте функцию =ВРЕМЗНАЧ() с заменой текста:

=ВРЕМЗНАЧ(

ЛЕВСИМВ(A2;2); // часы

ПСТР(A2;4;2); // минуты

0

)

Либо замените «ч» и «м» на двоеточие через НАЙТИ/ЗАМЕНИТЬ (Ctrl+H).

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

Да, с помощью функции РАБДЕНЬ.МЕЖД() или ЧИСТРАБДНИ(). Создайте отдельный список праздников и ссылайтесь на него в формуле:

=ЧИСТРАБДНИ(Дата_начала; Дата_конца; Праздники)

Где Праздники — это диапазон с датами (например, A1:A10).

Как экспортировать табель из Excel в 1С или бухгалтерскую программу?

Самые надёжные способы:

  1. Сохраните лист как CSV (Файл → Сохранить как → CSV) и импортируйте в 1С.
  2. Используйте Power Query для прямого подключения к базе 1С (если поддерживается).
  3. Напишите макрос на VBA, который будет генерировать файл в нужном формате.

Перед экспортом убедитесь, что:

  • Все даты в формате ДД.ММ.ГГГГ.
  • Время в формате ЧЧ:ММ.
  • Нет объединённых ячеек.
Как посчитать среднее отработанное время за месяц?

Используйте функцию СРЗНАЧ(), но предварительно преобразуйте время в часы:

=СРЗНАЧ(Диапазон_времени * 24)

Например, если отработанное время в столбце D, формула будет:

=СРЗНАЧ(D2:D31 * 24)

Не забудьте отформатировать ячейку с результатом как Числовой формат.

Можно ли в Excel вести учёт времени с точностью до секунды?

Да, но для этого:

  1. Установите формат ячейки как [ч]:мм:сс.
  2. Используйте функции ЧАС(), МИНУТЫ(), СЕКУНДЫ() для выделения компонентов времени.
  3. При импорте данных из систем контроля доступа (СКУД) секунды могут теряться — проверяйте формат исходных данных.

Пример формулы для расчёта с секундами:

=ЕСЛИ(B2

Результат будет в формате ч:мм:сс.