Как посчитать часы между датами в Excel: формулы для любых задач

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

В этой статье мы разберём 5 проверенных способов посчитать часы между датами — от простейших формул до сложных расчётов с учётом рабочего графика, выходных и перерывов. Вы узнаете, как избежать типичных ошибок (например, когда =B2-A2 выдаёт дату 1900-01-01 вместо часов), как правильно оформлять ячейки для временных данных и где скачать готовые шаблоны для автоматического подсчёта. А в конце — бонус: формула для расчёта ночных часов (с 22:00 до 6:00) с учётом пересечения дат.

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

📊 Как часто вам приходится считать часы между датами в Excel?
Ежедневно
Несколько раз в неделю
Редко, но метко
Никогда не приходилось

Почему Excel ошибается при вычитании дат (и как это исправить)

Самая распространённая ошибка при попытке посчитать часы между датами — это неправильный формат ячеек. Excel хранит даты и время как числа (где 1 = 1 день), но отображает их в человекочитаемом виде только если ячейка имеет формат Дата или Время. Если вы просто введёте 12.05.2026 14:30 в ячейку с форматом Общий, Excel преобразует это в число вроде 45412,60417 — и именно с ним будет работать формула.

Вторая ловушка — переход через полночь. Если ваш временной интервал начинается в 23:00 10.05.2026 и заканчивается в 02:00 11.05.2026, простая формула =Конец-Начало может вернуть неверный результат из-за смены даты. Excel воспринимает это как отрицательное время, если не настроить формат ячейки заранее.

Чтобы избежать этих проблем:

  • 📅 Всегда проверяйте формат ячеек с датами: выделите их, нажмите Ctrl+1 (или правой кнопкой → Формат ячеек) и выберите Дата или Время.
  • ⏱️ Для результата (разницы в часах) используйте формат [ч]:мм (с квадратными скобками!), чтобы Excel не сбрасывал счетчик после 24 часов.
  • 🔄 Если формула возвращает дату 1900-01-01, умножьте результат на 24: =(B2-A2)*24.
⚠️ Внимание: Если ваши даты хранятся как текст (например, после импорта из CSV), Excel не сможет их вычесть. Используйте функцию =ДАТАЗНАЧ() или =VALUE() для преобразования.

Способ 1: Простая разница в часах (базовая формула)

Для большинства задач хватит элементарной формулы:

= (Конечная_дата - Начальная_дата) * 24

Где Конечная_дата и Начальная_дата — это ячейки с датой и временем в формате дд.мм.гггг чч:мм. Умножение на 24 преобразует разницу в днях в часы.

Пример: если в ячейке A2 записано 10.05.2026 9:00, а в B211.05.2026 17:30, формула = (B2-A2)*24 вернёт 32,5 (часов).

Важно:

  • 📊 Формат ячейки с результатом должен быть Общий или Числовой (не Время!).
  • ⏳ Если нужно отобразить часы и минуты (например, 32:30), используйте формат [ч]:мм.
  • 🔢 Для округления до целых часов оберните формулу в =ОКРУГЛ().

Ячейки с датами имеют формат "Дата" или "Время"|Проверено отсутствие текстовых значений (например, "N/A")|Ячейка для результата отформатирована как "[ч]:мм" или "Общий"|Учтён переход через полночь (если интервал >24 часов)-->

Способ 2: Учёт только рабочих часов (с 9:00 до 18:00)

Если вам нужно посчитать только рабочее время между двумя датами (например, для табеля учёта), простой вычитания недостаточно. Здесь поможет комбинация функций МАКС(), МИН() и ЕСЛИ():

=ЕСЛИ(

(Конец >= Время_начала_рабочего_дня) * (Начало < Время_конца_рабочего_дня);

МИН(Конец; Время_конца_рабочего_дня) - МАКС(Начало; Время_начала_рабочего_дня);

0

)

Где:

  • Время_начала_рабочего_дня = 9:00 (или ваше значение)
  • Время_конца_рабочего_дня = 18:00

Для расчёта за несколько дней используйте эту формулу в сочетании с ЦЕЛОЕ() (количество полных рабочих дней) и ЕСЛИ() для первого/последнего дня. Полный шаблон можно скачать по ссылке в конце статьи.

⚠️ Внимание: Эта формула не учитывает выходные! Для их исключения добавьте проверку с ДЕНЬНЕД() или WORKDAY.INTL() (см. следующий раздел).
СценарийФормулаРезультат
Интервал полностью в рабочее время=МИН(B2;18:00)-МАКС(A2;9:00)8:00 (полный день)
Начало до 9:00, конец после 18:00=18:00-9:009:00 (максимум за день)
Интервал полностью вне рабочего времени=00:00
Переход через полночь (ночная смена)=ЕСЛИ(A2>B2; (1+B2-A2)*24; (B2-A2)*24)10:00 (с 22:00 до 8:00)

Способ 3: Исключение выходных и праздников

Для расчёта рабочих часов без учёта субботы/воскресенья используйте функцию WORKDAY.INTL (доступна в Excel 2010 и новее). Она возвращает количество полных рабочих дней между датами, а затем вы можете умножить результат на длительность рабочего дня (например, 8 часов):

= (WORKDAY.INTL(Начало; Конец-Начало; [выходные]; [праздники]) - 1) * 8 +

ЕСЛИ(ДЕНЬНЕД(Конец;2)<6; МИН(ВРЕМЯ(18;0;0); Конец) - МАКС(ВРЕМЯ(9;0;0); Конец); 0) -

ЕСЛИ(ДЕНЬНЕД(Начало;2)<6; МИН(ВРЕМЯ(18;0;0); Начало) - МАКС(ВРЕМЯ(9;0;0); Начало); 0)

Параметры:

  • 📅 [выходные] — строка вроде "0000011" (где 1 = выходной, а 00000 — рабочие дни с понедельника по пятницу).
  • 🎉 [праздники] — диапазон с датами праздников (необязательно).

Пример для рабочей недели с понедельника по пятницу (8 часов/день) и праздниками в диапазоне D2:D10:

= (WORKDAY.INTL(A2; B2-A2; "0000011"; D2:D10) - 1) * 8 +

ЕСЛИ(ДЕНЬНЕД(B2;2)<6; МИН(ВРЕМЯ(18;0;0); B2) - МАКС(ВРЕМЯ(9;0;0); B2); 0) -

ЕСЛИ(ДЕНЬНЕД(A2;2)<6; МИН(ВРЕМЯ(18;0;0); A2) - МАКС(ВРЕМЯ(9;0;0); A2); 0)

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

Для учёта ночных часов (например, для оплаты по повышенному тарифу) нужна формула, которая учитывает переход через полночь. Вот универсальное решение:

=ЕСЛИ(

(ВРЕМЯ(22;0;0) <= ВРЕМЯ(ЧАС(A2);МИНУТЫ(A2);СЕКУНДЫ(A2))) +

(ВРЕМЯ(6;0;0) >= ВРЕМЯ(ЧАС(B2);МИНУТЫ(B2);СЕКУНДЫ(B2))) < 2;

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

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

ЕСЛИ(A2 < B2; МИН(B2; ВРЕМЯ(6;0;0)) - ВРЕМЯ(0;0;0); 0)

)

Критичный нюанс: эта формула корректно работает только если ячейки A2 и B2 содержат полные дату и время (например, 10.05.2026 23:00). Если у вас только время без даты, добавьте текущую дату с помощью =СЕГОДНЯ()+A2.

Примеры результатов:

  • 🌙 Интервал 22:00–06:008:00 (полная ночная смена).
  • 🌙 Интервал 20:00–02:006:00 (с 22:00 до 02:00).
  • ☀️ Интервал 08:00–17:000:00 (нет ночных часов).
Почему формула не работает с датами без времени?

Если в ячейке записано только 10.05.2026 (без времени), Excel воспринимает это как 00:00. Чтобы избежать ошибок, всегда используйте полный формат дд.мм.гггг чч:мм или добавляйте время вручную: =A2+ВРЕМЯ(9;0;0) (для 9:00).

Способ 5: Учёт перерывов (например, обед 1 час)

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

1. Сначала рассчитайте общую разницу в часах:

= (B2-A2)*24

2. Затем вычтите перерывы с помощью ЕСЛИ():

= (B2-A2)*24 -

ЕСЛИ(И(A2<=ВРЕМЯ(13;0;0); B2>=ВРЕМЯ(14;0;0)); 1; 0) -

ЕСЛИ(И(A2<=ВРЕМЯ(9;30;0); B2>=ВРЕМЯ(9;45;0)); 0,25; 0)

В этом примере учитываются:

  • 🍽️ Обед: 1 час (с 13:00 до 14:00).
  • ☕ Перерыв на кофе: 15 минут (с 9:30 до 9:45).

Для нескольких перерывов используйте сумму всех вычитаний или создайте отдельную таблицу с временем перерывов и используйте СУММПРОИЗВ().

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

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

1. Формула возвращает дату 1900-01-01 вместо часов
🔹 Причина: Ячейка с результатом имеет формат Дата, а не Общий или [ч]:мм.
🔹 Решение: Измените формат на Общий или умножьте результат на 24.

2. Отрицательное время (например, -5:00)
🔹 Причина: Конечная дата раньше начальной (например, смена с 22:00 до 06:00).
🔹 Решение: Используйте формулу с учётом перехода через полночь:

=ЕСЛИ(B2

3. Формула не учитывает выходные
🔹 Причина: Простое вычитание дат не различает будни и выходные.
🔹 Решение: Замените B2-A2 на WORKDAY.INTL() (см. Способ 3).

4. Результат отображается как ########
🔹 Причина: Ячейка слишком узкая для отображения времени или числа.
🔹 Решение: Расширьте столбец или измените формат на Общий.

5. Формула игнорирует минуты
🔹 Причина: Вы использовали =ОКРУГЛ() или =ЦЕЛОЕ() без учёта дробной части.
🔹 Решение: Для округления до минут используйте =ОКРУГЛ((B2-A2)*1440; 0)/60 (1440 = минут в сутках).

⚠️ Внимание: Если вы импортируете данные из внешних источников (например, 1С или CRM), проверьте, не содержат ли ячейки с датами скрытые символы (пробелы, переносы строк). Используйте =ПЕЧСИМВ() для очистки: =ДАТАЗНАЧ(ПЕЧСИМВ(A2)).

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

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

Если дата и время разнесены по разным ячейкам (например, A2 = дата, B2 = время), объедините их с помощью функции =ДАТАВРЕМЯ():

= (ДАТАВРЕМЯ(ГОД(B2); МЕСЯЦ(B2); ДЕНЬ(B2); ЧАС(C2); МИНУТЫ(C2); СЕКУНДЫ(C2)) -

ДАТАВРЕМЯ(ГОД(A2); МЕСЯЦ(A2); ДЕНЬ(A2); ЧАС(B2); МИНУТЫ(B2); СЕКУНДЫ(B2))) * 24

Или проще: = (B2 + C2) - (A2 + B2), если C2 содержит время в формате чч:мм.

Можно ли посчитать часы между датами в Google Таблицах?

Да, все формулы из этой статьи работают и в Google Sheets, за исключением WORKDAY.INTL — там она называется =NETWORKDAYS.INTL. Также в Google Таблицах нет формата [ч]:мм, поэтому для отображения времени >24 часов используйте:

=ТЕКСТ((B2-A2)*24; "[ч]:мм")
Как посчитать часы между датами с учётом часового пояса?

Excel не поддерживает часовые пояса напрямую, но вы можете вручную скорректировать время:

  1. Добавьте или вычтите разницу в часах (например, для UTC+3: =B2 - ВРЕМЯ(3;0;0)).
  2. Используйте функцию =ЧАСОВОЙПОЯС() (только в Excel 365) для автоматической корректировки.

Пример для перевода из UTC в московское время (UTC+3):

= ( (B2 + ВРЕМЯ(3;0;0)) - (A2 + ВРЕМЯ(3;0;0)) ) * 24
Как автоматически закрасить ячейки с переработкой (например, >8 часов)?summary>

Используйте Условное форматирование:

  1. Выделите диапазон с результатами.
  2. Перейдите в Главная → Условное форматирование → Создать правило.
  3. Выберите Форматировать ячейки, которые содержат.
  4. Установите условие значение > 8 и выберите цвет заливки (например, красный).

Для динамического порога (например, > стандартной длительности смены) используйте формулу в правиле:

=A2>$С$1

Где $С$1 — ячейка с максимальной нормой часов.

Где скачать готовый шаблон для расчёта рабочих часов?

Вы можете скачать бесплатный шаблон Excel с формулами из этой статьи по ссылке (файл включает:

  • 📄 Лист с расчётом рабочих часов (с 9:00 до 18:00).
  • 📄 Лист с учётом ночных часов (с 22:00 до 6:00).
  • 📄 Лист с автоматическим исключением выходных.
  • 📄 Пример условного форматирования для переработок.

Шаблон совместим с Excel 2010 и новее, а также с Google Таблицами.