Как в Excel конвертировать дату в числовой формат: от дней до UNIX-времени

Вы когда-нибудь сталкивались с ситуацией, когда в Microsoft Excel или Google Таблицах нужно преобразовать дату в простое число? Например, для расчётов, интеграции с другими системами или анализа временных рядов? На первый взгляд задача кажется тривиальной, но на практике здесь скрыто множество нюансов: от стандартного отображения дней с 1900 года до UNIX-времени или юлианского календаря.

В этой статье мы разберём 5 рабочих способов конвертации дат в числа — от базовых функций до продвинутых приёмов с формулами. Вы узнаете, как получить количество дней между датами, преобразовать дату в UNIX-формат (секунды с 1970 года), а также избежать типичных ошибок при работе с временными метками. Особое внимание уделим скрытому формату хранения дат в Excel, который часто становится причиной путаницы у новичков.

Материал будет полезен как начинающим пользователям, так и опытным аналитикам. Все примеры протестированы в Excel 2019-2023 и Google Таблицах, с учётом их особенностей. Готовы разобраться? Тогда приступим!

Почему Excel хранит даты как числа (и как это использовать)

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

  • 📅 1 января 1900 года = число 1 (в Windows-version Excel)
  • 📅 1 января 2000 года = число 36526 (365 дней × 100 лет)
  • Время хранится как дробная часть: 0.5 = 12:00, 0.75 = 18:00

Это означает, что любая дата в Excel — это просто количество дней, прошедших с 1 января 1900 года (в macOS-версии отсчёт идёт с 1904 года, но это отдельная история). Такой подход позволяет легко выполнять арифметические операции: например, вычитать даты или добавлять дни.

📊 Какой формат даты вы чаще используете в Excel?
Текстовый (ДД.ММ.ГГГГ)
Числовой (дни с 1900)
UNIX-время
Другой

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

  1. Выделите ячейку с датой.
  2. Нажмите Ctrl+1 (или правая кнопка → Формат ячеек).
  3. Выберите категорию Числовой или Общий.
⚠️ Внимание: В Google Таблицах отсчёт начинается с 30 декабря 1899 года (число 1 = 31.12.1899). Это может привести к расхождению в 2 дня при импорте данных между платформами.

Способ 1: Преобразование даты в количество дней (базовый метод)

Самый простой способ получить числовое представление даты — изменить формат ячейки. Это не требует формул и работает в 99% случаев:

  1. Введите дату в ячейку (например, 15.05.2026).
  2. Выделите ячейку и нажмите Ctrl+1.
  3. В окне Формат ячеек выберите Числовой или Общий.

Excel автоматически отобразит серийный номер. Например, 15.05.2026 станет числом 45415 (если система использует 1900-й год как точку отсчёта).

Убедитесь, что ячейка содержит дату, а не текст|Проверьте настройки региона (ДД.ММ.ГГГГ vs ММ.ДД.ГГГГ)|Сравните результат с эталонной датой (например, 01.01.2000 = 36526)|Учтите разницу между Excel и Google Таблицами (см. предупреждение выше)-->

Этот метод подходит для:

  • 📊 Расчёта разницы между датами (например, срок выполнения задачи).
  • 🔄 Сортировки дат как чисел (быстрее, чем текстовая сортировка).
  • 🔗 Интеграции с системами, требующими числовой формат (например, некоторые API).
⚠️ Внимание: Если после изменения формата вы видите не число, а дату в другом виде (например, 45415 превращается в 15.05.2026), значит ячейка изначально содержала текст, а не дату. Используйте функцию =ДАТАЗНАЧ() для преобразования.

Способ 2: Функция ДАТАЗНАЧ() для текстового формата

Часто даты импортируются в Excel как текст (например, из CSV-файлов или баз данных). В этом случае простого изменения формата недостаточно — нужна функция =ДАТАЗНАЧ().

Синтаксис:

=ДАТАЗНАЧ("дата_как_текст")

Примеры:

Текстовая дата Формула Результат (число)
"15.05.2026" =ДАТАЗНАЧ("15.05.2026") 45415
"May 15, 2026" =ДАТАЗНАЧ("May 15, 2026") 45415
"2026-05-15" =ДАТАЗНАЧ("2026-05-15") 45415

Обратите внимание, что функция автоматически распознаёт разные форматы дат, но зависит от региональных настроек Excel. Если формула возвращает ошибку #ЗНАЧ!, проверьте:

  • 🌍 Формат даты в тексте (например, ММ/ДД/ГГГГ vs ДД.ММ.ГГГГ).
  • 📝 Отсутствие лишних символов (например, пробелов или кавычек).
  • 🔄 Правильность разделителей (точка, запятая, дефис).

Способ 3: UNIX-время (секунды с 1970 года)

Для работы с API, базами данных или системами анализа (например, Python, JavaScript) часто требуется UNIX-время — количество секунд, прошедших с 1 января 1970 года. В Excel нет встроенной функции для этого, но её можно эмулировать:

=((ДАТАЗНАЧ("15.05.2026") - ДАТАЗНАЧ("01.01.1970"))  86400) - (ВРЕМЯЗНАЧ("00:00:00")  86400)

Разберём формулу:

  1. ДАТАЗНАЧ("15.05.2026") - ДАТАЗНАЧ("01.01.1970") — разница в днях между датами.
  2. * 86400 — перевод дней в секунды (24 часа × 60 минут × 60 секунд).
  3. - (ВРЕМЯЗНАЧ("00:00:00") * 86400) — корректировка для времени (если оно указано).

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

  • 📅 15.05.2026 00:00:001715721600
  • 📅 01.01.2023 00:00:001672531200
⚠️ Внимание: В Google Таблицах для UNIX-времени есть готовая функция =UNIXВРЕМЯ(), но в Excel её нет. Также учтите, что некоторые системы используют миллисекунды вместо секунд — тогда результат нужно умножить на 1000.
Почему UNIX-время начинается с 1970 года?

Эта дата называется "Эпоха UNIX" (Unix Epoch). Она была выбрана как условный "ноль" в ранних версиях операционной системы UNIX, потому что:

1) Это было удобно для 32-битных систем (максимальное значение до 2038 года).

2) Дата предшествовала созданию UNIX (1969 год), что позволяло работать с отрицательными значениями.

3) 1 января — логичный старт для отсчёта времени.

Сегодня этот стандарт используется повсеместно, несмотря на "проблему 2038 года" (переполнение 32-битного счётчика).

Способ 4: Юлианский календарь (день года)

Иногда требуется не общее количество дней с 1900 года, а порядковый номер дня в текущем году (например, 15 мая — это 136-й день 2026 года). Для этого используйте комбинацию функций:

=ДАТАЗНАЧ(A1) - ДАТАЗНАЧ("01.01." & ГОД(A1)) + 1

Как это работает:

  1. ГОД(A1) — извлекает год из даты в ячейке A1.
  2. "01.01." & ГОД(A1) — формирует строку с первым днём года (например, "01.01.2026").
  3. ДАТАЗНАЧ(A1) - ДАТАЗНАЧ(...) — вычисляет разницу в днях между датой и началом года.
  4. + 1 — добавляет 1, так как 1 января должен быть днём №1, а не №0.

Примеры:

Дата Формула Результат (день года)
01.01.2026 =ДАТАЗНАЧ(A1)-ДАТАЗНАЧ("01.01.2026")+1 1
15.05.2026 =ДАТАЗНАЧ(A1)-ДАТАЗНАЧ("01.01.2026")+1 136
31.12.2026 =ДАТАЗНАЧ(A1)-ДАТАЗНАЧ("01.01.2026")+1 366 (високосный год)

Этот метод полезен для:

  • 📅 Анализа сезонности (например, продажи по дням года).
  • 📊 Построения графиков без привязки к конкретному году.
  • 🔄 Сравнения дат из разных лет (например, "136-й день 2023 vs 2026").

Способ 5: Продвинутые приёмы (VBA и Power Query)

Если вам нужно автоматизировать преобразование для больших массивов данных, стандартных функций может быть недостаточно. Рассмотрим два продвинутых подхода:

1. Macro VBA для пакетной обработки

Следующий код преобразует все выделенные ячейки с датами в числовой формат (дни с 1900 года):

Sub ConvertDatesToNumbers()

Dim cell As Range

For Each cell In Selection

If IsDate(cell.Value) Then

cell.NumberFormat = "General"

cell.Value = cell.Value

End If

Next cell

End Sub

Как использовать:

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Выделите ячейки с датами и запустите макрос (F5).

2. Power Query (Excel 2016+)

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

  1. Перейдите на вкладку Данные → Получить данные → Из таблицы/диапазона.
  2. В редакторе Power Query выделите столбец с датами.
  3. Нажмите Преобразовать → Формат → Число.
  4. Примените изменения (Закрыть и загрузить).

Преимущества Power Query:

  • 🔄 Автоматическое обновление при изменении исходных данных.
  • 📝 Сохранение шагов преобразования для повторного использования.
  • 🔧 Гибкие настройки (например, обработка ошибок).
⚠️ Внимание: При использовании VBA убедитесь, что макросы разрешены в настройках безопасности Excel (Файл → Параметры → Центр управления безопасностью → Параметры центра...). В корпоративных сетях это может быть заблокировано политиками IT-отдела.

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

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

Ошибка Причина Решение
Формула возвращает #ЗНАЧ! Ячейка содержит текст, а не дату Используйте =ДАТАЗНАЧ() или проверьте формат данных
Разница в 2 дня между Excel и Google Таблицами Разные точки отсчёта (1900 vs 1899) Добавьте/вычтите 2 дня вручную или используйте =ДАТА(год;месяц;день)
Отрицательные числа при вычитании дат Даты перепутаны местами (конец - начало вместо начало - конец) Поменяйте порядок ячеек или используйте =АБС() для модуля
Некорректное UNIX-время Не учтена временная зона или миллисекунды Уточните требования системы (UTC или локальное время, секунды или миллисекунды)
Дробные числа вместо целых В ячейке хранится дата + время Используйте =ЦЕЛОЕ() или =ОКРВНИЗ() для округления

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

  1. Выделите ячейку и посмотрите на строку формул — если там отображается '15.05.2026 (с апострофом), это текст.
  2. Используйте функцию =ТИП():
    =ТИП(A1)=1

    возвращает ИСТИНА, если в ячейке число (включая даты).

FAQ: Частые вопросы о преобразовании дат в числа

🔹 Почему после изменения формата ячейки дата превращается в пятизначное число?

Это нормально! Excel хранит даты как количество дней с 1900 года. Например, 45415 = 15 мая 2026 года. Чтобы вернуть дату, измените формат ячейки обратно на Дата.

🔹 Как преобразовать число обратно в дату?

Измените формат ячейки на Дата или используйте функцию =ДАТА(1900;1;1)+A1, где A1 — ячейка с числом. В Google Таблицах замените 1900 на 1899.

🔹 Можно ли получить номер недели вместо дня года?

Да, используйте функцию =НОМНЕДЕЛИ(). Например:

=НОМНЕДЕЛИ("15.05.2026";21)

вернёт 20 (20-я неделя 2026 года). Параметр 21 указывает, что неделя начинается с понедельника.

🔹 Почему моя формула UNIX-времени даёт неверный результат?

Скорее всего, не учтена временная зона. UNIX-время всегда в UTC, а Excel может использовать локальное время. Добавьте корректировку:

=((A1 - ДАТАЗНАЧ("01.01.1970"))  86400) - (ВРЕМЯ(3;0;0)  86400)

Здесь ВРЕМЯ(3;0;0) — поправка для UTC+3 (Москва).

🔹 Как преобразовать дату в число в Google Таблицах?

Принцип тот же, но есть нюансы:

  • Функция =ДАТАЗНАЧ() работает аналогично.
  • Для UNIX-времени есть готовая =UNIXВРЕМЯ().
  • Отсчёт начинается с 30.12.1899, а не с 01.01.1900.