Как вычислить разницу времени в Excel: формулы для часов, минут и дней

Разница между двумя временными отметками — одна из самых частых задач при работе с тайм-трекингом, учётом рабочего времени или анализом логов событий. В Microsoft Excel и Google Таблицах эта операция кажется простой, но на практике пользователи сталкиваются с ошибками формата, неправильным отображением отрицательных значений или необходимостью учитывать переход через полночь. Например, как корректно посчитать длительность ночной смены с 22:00 до 6:00?

В этой статье разберём 5 проверенных способов расчёта разницы времени — от базового вычитания до формул с учётом выходных и праздников. Вы узнаете, как избежать ошибки ###### в ячейках, почему Excel иногда показывает даты вместо часов, и как автоматизировать расчёты для больших таблиц. Все примеры адаптированы для Excel 2016–2023 и Google Sheets, с учётом особенностей российского формата времени (24-часовой).

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

Самый очевидный способ — вычесть одно время из другого. Например, если в ячейке A2 записано время начала смены (09:00), а в B2 — время окончания (17:30), формула будет:

=B2-A2

Но здесь есть 3 подводных камня:

  • 🔹 Формат ячейки: Результат отобразится как время (например, 8:30), а не как количество часов. Чтобы увидеть числовое значение, измените формат на Общий или Числовой.
  • 🔹 Отрицательные значения: Если время окончания раньше начала (например, смена с 22:00 до 02:00), Excel покажет ошибку или дату 1899-12-31.
  • 🔹 Переход через полночь: Формула не учитывает, что смена могла длиться более 24 часов (например, с 20:00 до 22:00 следующего дня).

Чтобы исправить формат, выделите ячейку с результатом, нажмите Ctrl+1 (или правой кнопкой → Формат ячеек) и выберите категорию [ч]:мм (квадратные скобки важны!). Это заставит Excel показывать полное количество часов, даже если оно превышает 24.

2. Разница с учётом ночных смен (переход через 00:00)

Когда смена начинается вечером и заканчивается утром следующего дня (например, с 22:00 до 06:00), простое вычитание даст неверный результат. Решение — добавить 1 (один полный день) к разнице, если время окончания меньше времени начала:

=ЕСЛИ(B2

Но эта формула работает только если даты начала и окончания записаны в одной ячейке (например, 22.05.2026 22:00). Если дата и время разнесены по разным колонкам, используйте:

=ЕСЛИ(B2

Где:

  • 📅 A1 и B1 — ячейки с датами начала и окончания.
  • A2 и B2 — ячейки с временем.
Почему формула не работает с отдельными временем и датой?

Если не учитывать даты (A1 и B1), Excel воспринимает 22:00 и 06:00 как время в рамках одного дня. Поэтому 06:00 - 22:00 даёт отрицательное значение, а не 8 часов (22:00–24:00 + 00:00–06:00).

Критическая ошибка: если в ваших данных время записано как текст (например, "22:00" без формата времени), формулы не сработают. Проверьте формат ячеек и при необходимости используйте функцию ВРЕМЗНАЧ() для преобразования:

=ЕСЛИ(ВРЕМЗНАЧ(B2)<ВРЕМЗНАЧ(A2); 1 + (ВРЕМЗНАЧ(B2)-ВРЕМЗНАЧ(A2)); ВРЕМЗНАЧ(B2)-ВРЕМЗНАЧ(A2))

3. Расчёт разницы в часах, минутах и секундах по отдельности

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

  • 🕒 ЧАС() — извлекает часы из временного значения.
  • ⏱️ МИНУТЫ() и СЕКУНДЫ() — для минут и секунд.
  • 📊 ЦЕЛОЕ() — округляет до целого числа.

Пример для ячейки с разницей D2 (где D2 = B2-A2):

Компонент Формула Пример результата
Полные часы =ЦЕЛОЕ(D2*24) 8 (для 8:45)
Полные минуты =ЦЕЛОЕ((D2*24-ЦЕЛОЕ(D2*24))*60) 45 (для 8:45)
Секунды =ЦЕЛОЕ(((D2*24-ЦЕЛОЕ(D2*24))*60-ЦЕЛОЕ((D2*24-ЦЕЛОЕ(D2*24))*60))*60) 0 (если время без секунд)

Для упрощения можно использовать функцию ЧАСРАЗН() (в английской версии — HOUR()), но она работает только с временем, а не с разницей. Альтернатива — текстовая функция:

=ТЕКСТ(D2; "[ч]:мм:сс")

Это отобразит разницу в формате 8:45:00, но не разделит её на отдельные ячейки.

Полные часы (например, 8,5)|Часы и минуты отдельно (8 ч 30 мин)|Только минуты (510 мин)|Дни, часы, минуты (1 день 2 ч)|Другой вариант-->

4. Учёт рабочих и выходных дней

Если нужно посчитать разницу только по рабочим дням (например, для расчёта времени выполнения задачи без учёта выходных), используйте функцию ЧИСТРАБДНИ(). Она исключает субботу, воскресенье и праздники.

Пример: задача началась 10.05.2026 14:00 и закончилась 14.05.2026 10:00. Нужно узнать, сколько рабочих часов прошло между этими датами.

=ЧИСТРАБДНИ(A1; B1; [Праздники])*24 + ЕСЛИ(B1

Где:

  • 📅 A1, B1 — ячейки с датами начала и окончания.
  • A2, B2 — ячейки с временем.
  • 🎉 [Праздники] — диапазон с датами праздников (например, D2:D10).

Функция ЧИСТРАБДНИ() вернёт количество полных рабочих дней между датами, умноженное на 24 (часы в дне). Вторая часть формулы добавляет разницу во времени внутри первого и последнего дня.

⚠️ Внимание: Если в вашем регионе рабочая неделя не стандартная (например, пятница и суббота — выходные), создайте отдельную таблицу с указанием рабочих дней и используйте функцию ЧИСТРАБДНИ.МЕЖД() (в английской версии — NETWORKDAYS.INTL()).

5. Автоматический расчёт разницы с учётом перерывов

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

  • 🕘 Начало работы: A2 (09:00).
  • 🕓 Окончание работы: B2 (18:00).
  • ☕ Перерыв: C2 (1:00).

Формула:

= (B2-A2) - ВРЕМЗНАЧ(C2)

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

= (B2-A2) - ВРЕМЯ(ЧАС(ВРЕМЗНАЧ("1:30")); МИНУТЫ(ВРЕМЗНАЧ("1:30")); 0)

Для нескольких перерывов (например, два по 15 минут) сложите их длительность в отдельной ячейке и вычтите сумму:

= (B2-A2) - СУММ(D2:D5)

Где D2:D5 — диапазон с длительностями перерывов.

Убедитесь, что время перерывов записано в формате времени (не текст)|

Проверьте, что перерывы не пересекаются с рабочим временем|

Используйте функцию СУММ() для нескольких перерывов|

Настройте формат ячейки с результатом как [ч]:мм-->

6. Распространённые ошибки и как их исправить

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

Ошибка Причина Решение
###### в ячейке Слишком большое значение времени (более 24 часов) или отрицательный результат. Измените формат на [ч]:мм или используйте =АБС(B2-A2).
Результат в виде даты (например, 01.01.1900) Excel интерпретирует разницу как дату, а не время. Умножьте на 24 (= (B2-A2)*24) или измените формат.
Отрицательное время отображается как ######## Формат ячейки не поддерживает отрицательные значения времени. Используйте =ЕСЛИ(B2.
Формула не обновляется при изменении данных Автоматический пересчёт отключён или время записано как текст. Проверьте формат ячеек и включите пересчёт в Формулы → Параметры вычислений.
Неправильный результат для ночных смен Не учтён переход через полночь. Добавьте +1 к разнице, если время окончания меньше начала.
⚠️ Внимание: Если вы импортируете данные из внешних источников (например, из или SQL), время может записываться как текст. Используйте функцию ВРЕМЗНАЧ() или инструмент Текст по столбцам (на вкладке Данные) для преобразования.

7. Продвинутые приёмы: разница с точностью до миллисекунд

Для высокоточных расчётов (например, в спортивном тайминге или логах серверов) может потребоваться учёт миллисекунд. Excel хранит время как долю дня (например, 0,5 = 12:00:00), поэтому для миллисекунд используйте:

= (B2-A2)*86400

Где 86400 — количество секунд в дне. Результат будет в секундах с десятичной дробью (например, 30600,5 = 8 часов 30 минут 0,5 секунды).

Чтобы разделить на часы, минуты, секунды и миллисекунды:

  • 🕒 Часы: =ЦЕЛОЕ((B2-A2)*24)
  • ⏱️ Минуты: =ЦЕЛОЕ((B2-A2)*24*60) - ЦЕЛОЕ((B2-A2)*24)*60
  • ⏱️ Секунды: =ЦЕЛОЕ((B2-A2)*86400) - ЦЕЛОЕ((B2-A2)*24)*3600 - ЦЕЛОЕ((B2-A2)*24*60 - ЦЕЛОЕ((B2-A2)*24)*60)*60
  • Миллисекунды: =ОСТАТ(((B2-A2)*86400 - ЦЕЛОЕ((B2-A2)*86400)); 1)*1000

Для удобства создайте пользовательский формат:

  1. Выделите ячейку с разницей.
  2. Нажмите Ctrl+1ЧислоДругие форматы.
  3. В поле Тип введите: [ч]:мм:сс.000

Это отобразит время в формате 8:30:00.500 (8 часов, 30 минут, 0 секунд, 500 миллисекунд).

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

Как посчитать разницу между временем в разных часовых поясах?

Если время записано с учётом часовых поясов (например, 10:00 MSK и 12:00 UTC+3), сначала приведите оба значения к одному поясу. В Excel нет встроенной функции для этого, поэтому:

  1. Создайте столбец с поправкой (например, +3 для UTC+3).
  2. Используйте формулу: =ВРЕМЯ(ЧАС(A2)+C2; МИНУТЫ(A2); СЕКУНДЫ(A2)), где C2 — поправка.
  3. Вычитайте приведённые значения.

Для автоматического учёта поясов можно использовать Power Query (на вкладке Данные).

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

Эта ошибка возникает в трёх случаях:

  1. Результат вычитания отрицательный (например, 06:00 - 22:00). Решение: используйте =АБС(B2-A2) или добавьте +1 для ночных смен.
  2. Ширина столбца недостаточна. Решение: расширьте столбец или измените формат на [ч]:мм.
  3. Результат превышает 24 часа, а формат ячейки — стандартный время. Решение: примените формат [ч]:мм:сс.
Как посчитать сумму разниц времени в столбце?

Если у вас столбец с разницами времени (например, D2:D100), простая функция СУММ() может дать неверный результат из-за формата. Используйте:

=СУММ(D2:D100)*24

И установите для ячейки с результатом формат Общий или Числовой. Это преобразует сумму в часы.

Для отображения в формате чч:мм:

=ТЕКСТ(СУММ(D2:D100); "[ч]:мм")
Можно ли посчитать разницу между временем и текущим моментом?

Да, используйте функцию СЕЙЧАС() (обновляется при каждом пересчёте листа) или ТДАТА() (фиксированная дата/время в момент ввода). Примеры:

  • Разница с текущим временем: =СЕЙЧАС()-A2.
  • Разница с фиксированным моментом: =ТДАТА()-A2.

Чтобы автоматически обновлять время, нажмите F9 или включите автоматический пересчёт в Формулы → Параметры вычислений.

Как учитывать летнее/зимнее время при расчётах?

Excel не поддерживает автоматический учёт перехода на летнее/зимнее время. Решения:

  1. Создайте отдельный столбец с поправкой (+1 или -1 час) для дат перехода.
  2. Используйте Power Query для массовой корректировки времени.
  3. Для России (где переход отменён с 2014 года) проблема не актуальна, но важна для данных из других стран.

Пример формулы с поправкой:

=ЕСЛИ(A2>=ДАТА(2026;3;31); B2+ВРЕМЯ(1;0;0); B2)

Где ДАТА(2026;3;31) — дата перехода на летнее время.