Расчёт времени простоя в Excel: 5 проверенных методов с формулами и примерами

Время простоя — критически важный показатель для производственных предприятий, сервисных центров и IT-инфраструктур. Даже 10-15 минут неэффективного использования оборудования или персонала могут обернуться тысячами рублей убытков в масштабе месяца. Но как автоматизировать расчёт простоя в Microsoft Excel, если данные поступают в виде сырых временных меток или логов событий?

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

Вы узнаете, как обрабатывать данные с секундной точностью, учитывать ночные смены и пересекающиеся временные интервалы, а также научитесь выявлять «скрытые» простои, которые не видны в стандартных отчётах. Все примеры адаптированы для Excel 2019–2023 и Microsoft 365, с учётом особенностей новых функций вроде LET и LAMBDA.

1. Подготовка данных: как правильно структурировать временные метки

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

  • ⏱️ Формат ячеек: временные метки должны быть в формате время (например, 13:45:22), а не текстом. Проверить это можно по выравниванию — время по умолчанию выравнивается вправо.
  • 📊 Структура таблицы: каждый событие (начало/окончание работы, пауза) должно занимать отдельную строку с указанием типа события в соседнем столбце.
  • 🔄 Хронологический порядок: данные должны быть отсортированы по времени по возрастанию. В противном случае формулы будут выдавать некорректные интервалы.

Если ваши данные поступают в текстовом формате (например, "2026-05-15 08:30:00"), преобразуйте их с помощью функции =ВРЕМЗНАЧ(ПРАВСИМВ(A2;8)) для времени или =ДАТАЗНАЧ(ЛЕВСИМВ(A2;10))+ВРЕМЗНАЧ(ПРАВСИМВ(A2;8)) для даты+времени. Для разделения даты и времени используйте формулу:

=ТЕКСТ(A2;"ч:мм:сс")  // Извлекает только время из ячейки с датой
⚠️ Внимание: Если в ваших данных есть пустые ячейки или текстовые ошибки (например, "N/A"), используйте функцию =ЕСЛИОШИБКА(ВРЕМЗНАЧ(...);0), чтобы избежать сбоев в расчётах.

Пример корректной структуры таблицы:

ДатаВремяСобытиеОборудование
15.05.202608:00:00Начало сменыСтанок #1
15.05.202608:15:00Начало работыСтанок #1
15.05.202609:30:00Пауза (техобслуживание)Станок #1
15.05.202610:00:00Возобновление работыСтанок #1
15.05.202612:45:00Окончание работыСтанок #1
📊 Как вы обычно фиксируете время простоя?
Вручную в журнале
Автоматически через датчики
Через программные логи
Не фиксируем
Другой способ

2. Базовый метод: расчёт простоя между двумя событиями

Самый простой сценарий — когда у вас есть чёткие метки начала и окончания простоя. Например, станок остановился в 14:20 и заработал снова в 14:45. В этом случае достаточно вычесть одно время из другого:

=B3-B2  // Где B2 — время остановки, B3 — время возобновления

Однако здесь есть подводные камни:

  • ⏰ Формат результата: Excel по умолчанию отображает разницу как время (например, 0:25:00), но для дальнейших расчётов лучше преобразовать его в десятичные доли дня (1 = 24 часа). Используйте формат ячейки [ч]:мм:сс для корректного отображения интервалов >24 часов.
  • 🔢 Отрицательные значения: если время возобновления раньше времени остановки (например, из-за ошибки в данных), формула вернёт ######. Используйте =МАКС(B3-B2;0), чтобы игнорировать такие случаи.

Для расчёта суммарного простоя за смену добавьте столбец с типом события (например, "Простой") и используйте функцию СУММЕСЛИ:

=СУММЕСЛИ(C2:C100;"Простой";D2:D100)
⚠️ Внимание: Если в ваших данных есть ночные простои (например, с 23:45 до 00:10), базовая формула вычитания даст некорректный результат. Для таких случаев используйте метод из раздела 4.

☑️ Подготовка к расчёту простоя

Выполнено: 0 / 4

3. Расчёт простоя между операциями (скрытые паузы)

Часто простои возникают между завершением одной операции и началом другой. Например, станок закончил обработку детали в 11:30, а следующая деталь поступила только в 11:45. Эти 15 минут — неучтённый простой, который "прячется" между строками данных.

Чтобы выявить такие интервалы, используйте смещённую формулу:

=ЕСЛИ(I2=I3;ЕСЛИ(B3-B2>0;B3-B2;0);0)

Где:

  • I2:I3 — столбец с идентификатором оборудования (чтобы не учитывать простои между разными станками),
  • B2:B3 — столбец со временем.

Для автоматизации добавьте вспомогательный столбец "Тип интервала":

- Если текущая строка = "Окончание работы", а следующая = "Начало работы" → "Простой"

- В остальных случаях → "-"

Пример формулы для вспомогательного столбца:

=ЕСЛИ(И(C2="Окончание работы";C3="Начало работы");"Простой";"-")

Критическая ошибка: если в данных есть пропущенные события (например, отсутствует метка "Окончание работы"), формула пропустит простой. Всегда проверяйте целостность лога перед анализом.

Как найти "потерянные" метки в данных?

Используйте сводную таблицу с подсчётом количества событий каждого типа по оборудованию. Если для какого-то станка количество "Начало работы" не равно количеству "Окончание работы", значит, данные неполные.

4. Учёт ночных смен и пересекающихся интервалов

Если простой происходит в ночное время (например, с 23:50 до 00:20), простая разница B2-B1 даст результат ###### или некорректное значение. Решение — использовать условную логику с добавлением полных суток:

=ЕСЛИ(B2>B1; B2-B1; 1+B2-B1)

Для более сложных сценариев (например, простои длительностью >24 часов) применяйте функцию МОД:

=МОД(B2-B1;1)

Если в данных есть пересекающиеся интервалы (например, два простоя на одном станке в одно время), используйте массивные формулы для объединения временных отрезков:

=ЕСЛИОШИБКА(

ЛЕВСИМВ(ТЕКСТ(

МИН(ЕСЛИ(($A$2:$A$100=A2)*($B$2:$B$100="Простой");$C$2:$C$100))-

МАКС(ЕСЛИ(($A$2:$A$100=A2)*($B$2:$B$100="Простой");$D$2:$D$100));

"[ч]:мм:сс"

);10);

"-"

)

Эта формула ищет минимальное время окончания простоя и максимальное время начала для каждого оборудования, эффективно "склеивая" пересекающиеся интервалы.

ОборудованиеТип событияНачалоОкончаниеДлительность
Станок #1Простой23:5000:20=ЕСЛИ(C2>D2;1+D2-C2;D2-C2)
Станок #2Простой22:3023:45=D3-C3
Станок #1Простой00:1000:30=ЕСЛИ(C4>D4;1+D4-C4;D4-C4)

5. Автоматизация с помощью Power Query и сводных таблиц

Для крупных наборов данных (тысячи строк) ручные формулы становятся неэффективными. В этом случае используйте Power Query (Данные → Получить данные → Из таблицы/диапазона):

  1. Загрузите данные в Power Query.
  2. Добавьте индексный столбец (Добавить столбец → Индексный столбец).
  3. Создайте смещённый столбец с временем следующего события:
    = Table.AddColumn(#"Добавленный индекс", "Следующее время", each #"Добавленный индекс"{[Индекс]+1}[Время])
  4. Рассчитайте разницу:
    = Table.AddColumn(#"Смещённое время", "Простой", each [Следующее время]-[Время])
  5. Отфильтруйте строки, где разница > 0 и тип текущего события = "Окончание работы".

Для визуализации используйте сводную таблицу с группировкой по:

  • 📅 Дате
  • 🏭 Оборудованию
  • ⏱️ Типу простоя (плановый/неплановый)

Добавьте вычисляемое поле для расчёта процента простоя от общей длительности смены:


= [Сумма по полю "Простой"] / (МАКС([Время]) - МИН([Время]))

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

6. Визуализация простоя: графики и условное форматирование

Числовые данные о простое малоинформативны без визуализации. Используйте эти приёмы для наглядного анализа:

6.1. Гистограмма простоя по оборудованию

Выделите данные и создайте гистограмму с накоплением (Вставка → Гистограмма → Объёмная гистограмма с накоплением). Добавьте:

  • 🎨 Линию тренда для выявления сезонных простоев (например, летом или в праздники).
  • 📌 Подписи данных с точными значениями (клик правой кнопкой по столбцу → "Добавить подписи данных").

6.2. Тепловая карта простоев по времени суток

Используйте условное форматирование с цветовыми шкалами:

  1. Создайте сводную таблицу с группировкой времени по часам.
  2. Выделите ячейки с длительностью простоя.
  3. Примените правило Условное форматирование → Цветовые шкалы → Красный-Жёлтый-Zелёный.

6.3. Диаграмма Ганта для анализа пересечений

Для отображения временных интервалов:

  • Создайте таблицу с полями: Оборудование, Начало простоя, Длительность.
  • Вставьте линейчатую диаграмму с накоплением.
  • Отформатируйте оси: по вертикали — оборудование, по горизонтали — время.

Пример диаграммы Ганта для двух станков:

Диаграмма Ганта с простоями Станка #1 (красный) и Станка #2 (синий)

7. Продвинутые методы: VBA и LAMBDA для сложных расчётов

Если вам нужно обрабатывать данные с учётом:

  • 🔄 Рекурсивных простоев (например, простой внутри другого простоя),
  • 📝 Многокритериальных правил (простой считается только если длительность >10 минут и причиной является "Техобслуживание"),
  • 🤖 Автоматического импорта из внешних систем,

используйте VBA или новые функции Excel 365.

7.1. Функция LAMBDA для гибких расчётов

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


=LAMBDA(начало;конец;порог;

ЕСЛИ(

(конец-начало) > (порог/1440);

начало & "–" & ТЕКСТ(конец;"ч:мм") & " (" & ТЕКСТ(конец-начало;"[ч]:мм") & ")";

"-"

)

)

Пример вызова:

=CalculateDowntime(B2;C2;15)

Где 15 — минимальная длительность простоя в минутах для учёта.

7.2. VBA-скрипт для обработки логов

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


Sub FindDowntimes()

Dim ws As Worksheet, newWs As Worksheet

Dim lastRow As Long, i As Long

Dim startTime As Date, endTime As Date

Dim downtimeList As String

Set ws = ActiveSheet

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

' Создать новый лист для результатов

Set newWs = Worksheets.Add

newWs.Name = "Простои"

newWs.Range("A1:C1").Value = Array("Оборудование", "Начало простоя", "Длительность")

' Поиск простоев

Dim resultRow As Long: resultRow = 2

For i = 2 To lastRow - 1

If ws.Cells(i, 3).Value = "Окончание работы" And _

ws.Cells(i + 1, 3).Value = "Начало работы" Then

startTime = ws.Cells(i, 2).Value

endTime = ws.Cells(i + 1, 2).Value

If endTime < startTime Then endTime = endTime + 1 ' Учёт ночных простоев

newWs.Cells(resultRow, 1).Value = ws.Cells(i, 4).Value ' Оборудование

newWs.Cells(resultRow, 2).Value = startTime

newWs.Cells(resultRow, 3).Value = endTime - startTime

newWs.Cells(resultRow, 3).NumberFormat = "[ч]:мм:сс"

resultRow = resultRow + 1

End If

Next i

' Форматирование результатов

newWs.Columns("A:C").AutoFit

newWs.Range("A1:C1").Font.Bold = True

End Sub

Чтобы запустить макрос:

  1. Нажмите Alt + F11 для открытия редактора VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Вернитесь в Excel и запустите макрос через Разработчик → Макросы (или Alt + F8).
⚠️ Внимание: Перед запуском VBA-скриптов всегда создавайте резервную копию файла. Макросы могут непреднамеренно изменить данные, если логика скрипта не адаптирована под вашу структуру таблицы.

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

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

ОшибкаПричинаРешение
Некорректные отрицательные значения Время окончания раньше времени начала (например, из-за ошибки в данных) Используйте =МАКС(конец-начало;0) или =ЕСЛИ(конец<начало;1+конец-начало;конец-начало)
Потеря точности (секунды обнуляются) Формат ячейки установлен как ч:мм вместо ч:мм:сс Измените формат на [ч]:мм:сс для интервалов >24 часов
Двойной учёт простоев Пересекающиеся интервалы не объединяются Примените метод из раздела 4 с функцией МОД
Ошибки при ночных простоях Формула не учитывает переход через полночь Добавьте условие +1 для интервалов, где конец < начало

Ещё одна распространённая проблема — неучтённые микропростои (1–5 минут). Они могут составлять до 20% от общего времени, но часто игнорируются из-за сложности выявления. Чтобы их найти:

  1. Отсортируйте данные по оборудованию и времени.
  2. Добавьте столбец с разницей между соседними событиями:
  3. =ЕСЛИ(A3=A2;B3-B2;"-")
  4. Примените фильтр для значений > 0 и < 0,00347 (5 минут в долях дня).

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

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

Используйте аппроксимацию:

  1. Найдите средний интервал между событиями для каждого типа оборудования.
  2. Замените пропущенные метки на расчётное время (например, =СРЗНАЧ(интервалы) + последнее_время).
  3. Пометите аппроксимированные данные условным форматированием (например, серым цветом).

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

Можно ли автоматически импортировать данные о простое из 1С или MES-систем?

Да, используйте:

  • Power Query для подключения к ODBC, SQL или API системы.
  • VBA с библиотекой ADODB для прямого запроса к базе данных.
  • Готовые коннекторы (например, ODBC-драйвер для 1С).

Пример строки подключения для :

Driver={1C:v8 8.3};Server=имя_сервера;Ref=имя_базы;
Как рассчитать простой в процентах от общей длительности смены?

Используйте формулу:

= (СУММ(простои) / (МАКС(время) - МИН(время))) * 100

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

Что делать, если простои фиксируются с точностью до секунды, а нужно округлить до минут?

Примените функцию =ОКРУГЛВВЕРХ(интервал*1440;0)/1440, где:

  • интервал — ячейка с длительностью простоя в долях дня,
  • 1440 — количество минут в дне (24×60).

Для округления до 5 минут используйте =ОКРУГЛВВЕРХ(интервал*288;0)/288 (1440/5).

Как визуализировать простои в реальном времени (дашборд)?

Создайте интерактивный дашборд:

  1. Используйте срезы (Вставка → Срез) для фильтрации по оборудованию/дате.
  2. Добавьте искры (мини-графики в ячейках) для трендов.
  3. Настройте автоматическое обновление данных через Power Query (кнопка "Обновить все").

Для реального времени подключите Excel к Power BI или используйте Office Scripts в Excel Online.