Преобразование времени в Excel: от секунд до Unix-меток

Почему Excel «не понимает» ваше время?

Вы загрузили данные из внешней системы, скопировали время из веб-отчёта или получили файл с временными метками в нестандартном формате — и Excel упорно воспринимает их как текст, числа или вовсе выдаёт ошибки. Знакомая ситуация? Проблема в том, что Excel хранит даты и время как числа (где 1 = 1 января 1900 года, а дробная часть — время суток), но внешние источники часто используют другие форматы: секунды с начала дня, Unix-время (количество секунд с 1970 года) или строки типа "14:30:45".

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

Спойлер: для 80% задач хватит трёх функций — ВРЕМЯ(), ДАТАЗНАЧ() и ТЕКСТ(). Но есть нюансы, о которых не пишут в стандартных руководствах.

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

1. Преобразование текста в формат времени (например, "14:30" → 14:30)

Самая распространённая проблема: время хранится как текст (например, после экспорта из , Google Analytics или базы данных), и Excel не распознаёт его как временной формат. Визуально ячейка выглядит как 14:30, но выделена по левому краю (признак текста), и с ней нельзя выполнять вычисления.

Решение зависит от исходного формата:

  • 🔹 Часы:минуты (например, "14:30"): используйте функцию =ВРЕМЯЗНАЧ(A1) или просто измените формат ячейки на Время.
  • 🔹 Часы.минуты (например, "14.30"): замените точку на двоеточие через =ПОДСТАВИТЬ(A1; "."; ":"), затем примените ВРЕМЯЗНАЧ.
  • 🔹 Только часы (например, "14"): используйте =ВРЕМЯ(A1; 0; 0).
  • 🔹 Полная дата+время (например, "20.05.2026 14:30"): разделите на две ячейки или используйте =ДАТАЗНАЧ(ЛЕВСИМВ(A1;10)) + ВРЕМЯЗНАЧ(ПРАВСИМВ(A1;5)).

Если данных много, проще использовать специальную вставку:

  1. Скопируйте столбец с текстом.
  2. Вставьте значения через Правка → Специальная вставка → Умножить (предварительно введите 1 в пустую ячейку).
  3. Измените формат ячеек на Время.

2. Конвертация секунд в часы/минуты (например, 5400 → 01:30:00)

Допустим, у вас есть столбец с количеством секунд (например, длительность звонков или время выполнения задачи), и нужно перевести их в формат ЧЧ:ММ:СС. Здесь поможет простая формула:

=ВРЕМЯ(0; 0; A1)

Где A1 — ячейка с секундами. Но есть нюансы:

  • 🔹 Если секунд больше 86400 (24 часа), Excel обнулит счётчик. Чтобы показать полное время (например, 27:30:00), используйте пользовательский формат [ч]:мм:сс.
  • 🔹 Для миллисекунд (например, из логов программ) делите значение на 1000: =ВРЕМЯ(0; 0; A1/1000).
  • 🔹 Если нужно вывести только часы и минуты (без секунд): =ТЕКСТ(ВРЕМЯ(0;0;A1);"ч:мм").
Исходные данные (секунды) Формула Результат (формат [ч]:мм:сс)
3600 =ВРЕМЯ(0;0;A1) 01:00:00
5400 =ВРЕМЯ(0;0;A1) 01:30:00
93600 (26 часов) =ВРЕМЯ(0;0;A1) + формат [ч]:мм:сс 26:00:00
1500 (миллисекунды) =ВРЕМЯ(0;0;A1/1000) 00:01:30

☑️ Преобразование секунд в время

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

3. Работа с Unix-временем (timestamp)

Unix-время (или timestamp) — это количество секунд, прошедших с 1 января 1970 года 00:00:00 UTC. Такой формат часто встречается в API, логах серверов и базах данных. Чтобы преобразовать его в читаемый вид в Excel, нужно:

  1. Учесть разницу между 1970 и 1900 годами (стартовая дата Excel): 25569 дней.
  2. Разделить timestamp на 86400 (количество секунд в дне), чтобы получить дробную часть для времени.
  3. Добавить временную зону (если нужно).

Формула для UTC:

=A1/86400 + ДАТА(1970;1;1) - 2

Где A1 — ячейка с timestamp. Минус 2 дня нужен из-за исторической ошибки в Excel (1900 год считался високосным). Для Московского времени (UTC+3) добавьте +3/24:

=A1/86400 + ДАТА(1970;1;1) - 2 + 3/24
Почему минус 2 дня в формуле?

Excel ошибочно считает 1900 год високосным (хотя он не был таковым по григорианскому календарю). Поэтому между 1.01.1970 и 1.01.1900 на самом деле 25567 дней, а не 25569. Минус 2 компенсирует эту ошибку.

Обратное преобразование (из даты/времени Excel в Unix-timestamp):

=ЦЕЛОЕ((A1 - ДАТА(1970;1;1) + 2) * 86400)
⚠️ Внимание: Если ваш timestamp в миллисекундах (типично для JavaScript), делите на 1000: =A1/86400000 + ДАТА(1970;1;1) - 2.

4. Преобразование времени в десятичный формат (например, 1:30 → 1.5)

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

=ЧАС(A1) + МИНУТЫ(A1)/60 + СЕКУНДЫ(A1)/3600

Примеры:

  • 🔹 01:30:001.5 (1 час 30 минут = 1.5 часа).
  • 🔹 00:45:000.75.
  • 🔹 02:15:002.25.

Обратное преобразование (из десятичных часов в формат времени):

=ВРЕМЯ(ЦЕЛОЕ(A1); (A1-ЦЕЛОЕ(A1))*60; 0)
⚠️ Внимание: Если в десятичном формате больше 24 часов (например, 27.5 для 27.5 часов), используйте формулу с учётом дней: =A1/24 и примените формат [ч]:мм.

5. Импорт времени из CSV/ТXT: почему сбивается формат?

При импорте данных из CSV или TXT Excel часто «портит» временные метки: например, 2026-05-20 14:30:00 превращается в 20.05.2026, а время теряется. Причина — автоматическое распознавание форматов. Чтобы этого избежать:

  • 🔹 Используйте Мастер текстов (импорт): Данные → Из текста, выберите столбец с временем и укажите формат ДМЙ Г:М:С.
  • 🔹 Если данные уже загружены, примените ТЕКСТРАЗБ():
    =ДАТАЗНАЧ(ЛЕВСИМВ(A1;10)) + ВРЕМЯЗНАЧ(ПРАВСИМВ(A1;8))
  • 🔹 Для больших файлов используйте Power Query: Данные → Получить данные → Из файла → Текст/CSV, затем в редакторе измените тип столбца на Дата/время.

Если время хранится в нестандартном формате (например, 2026/05/20 14:30), замените разделители перед импортом:

=ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1; "/"; "."); " "; " ")

6. Продвинутые сценарии: миллисекунды, временные зоны, ISO 8601

Для специалистов, работающих с логами, API или научными данными, часто требуются нестандартные преобразования:

Сценарий Формула Пример
Миллисекунды → время =ВРЕМЯ(0;0;A1/1000) 150000:00:01.500
ISO 8601 (2026-05-20T14:30:00Z) =ДАТАЗНАЧ(ЛЕВСИМВ(A1;10)) + ВРЕМЯЗНАЧ(ПСТР(A1;12;8)) 20.05.2026 14:30
Временная зона (UTC→MSK) =A1 + ВРЕМЯ(3;0;0) 14:00 UTC17:00 MSK
Секунды с начала дня =ВРЕМЯ(0;0;A1) 5400015:00:00

Для работы с ISO 8601 (международный стандарт записи даты и времени) может понадобиться удалить букву "T" и суффикс временной зоны ("Z"):

=ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1; "T"; " "); "Z"; "")

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

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

  • 🔹 Отрицательное время: Excel не поддерживает отрицательные значения времени. Решение — использовать формулу вида =ЕСЛИ(A1<0; "-"; ВРЕМЯ(...)) или перейти на Power Query.
  • 🔹 24+ часа отображаются как 00:00: примените пользовательский формат [ч]:мм:сс.
  • 🔹 Дата сбивается на 4 года: проверьте настройки Дата 1904 (актуально для Mac).
  • 🔹 Функция ВРЕМЯЗНАЧ возвращает #ЗНАЧ!: убедитесь, что текстовый формат времени соответствует региональным настройкам (например, "14:30" вместо "2:30 PM").
⚠️ Внимание: При копировании времени из веб-страниц или PDF часто попадают неразрывные пробелы ( ). Они ломают функции вроде ВРЕМЯЗНАЧ. Используйте =ПЕЧСИМВ(A1), чтобы очистить данные.

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

Как преобразовать время из формата "AM/PM" (например, "2:30 PM") в 24-часовой?

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

=ЕСЛИ(ПРАВСИМВ(A1;2)="PM"; ВРЕМЯЗНАЧ(ПОДСТАВИТЬ(A1;"PM";""))+0.5; ВРЕМЯЗНАЧ(ПОДСТАВИТЬ(A1;"AM";"")))

Или замените "PM" на "+12" и "AM" на "" через ПОДСТАВИТЬ, затем примените ВРЕМЯЗНАЧ.

Почему после преобразования время отображается как ######?

Это означает, что ширина столбца недостаточна для отображения или формат ячейки неверный. Расширьте столбец или измените формат на Время или Общий.

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

Вычтите одно время из другого и примените нужный формат:

  • Для часов: =ТЕКСТ(B1-A1;"[ч]:мм").
  • Для минут: =ТЕКСТ((B1-A1)*1440;"0").
  • Для секунд: =ТЕКСТ((B1-A1)*86400;"0").
Можно ли автоматически обновлять время в Excel?

Да, используйте функции СЕЙЧАС() или ТДАТА(). Они обновляются при каждом пересчёте листа. Для фиксированного времени нажмите Ctrl + ; (текущая дата) или Ctrl + Shift + ; (текущее время).

Как экспортировать время в Unix-format для API?

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

=ЦЕЛОЕ((A1 - ДАТА(1970;1;1) + 2) * 86400)

Для миллисекунд умножьте результат на 1000.