Вы когда-нибудь сталкивались с ситуацией, когда в 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 года, но это отдельная история). Такой подход позволяет легко выполнять арифметические операции: например, вычитать даты или добавлять дни.
Чтобы увидеть это число, достаточно изменить формат ячейки:
- Выделите ячейку с датой.
- Нажмите
Ctrl+1(или правая кнопка →Формат ячеек). - Выберите категорию
ЧисловойилиОбщий.
⚠️ Внимание: В Google Таблицах отсчёт начинается с 30 декабря 1899 года (число 1 = 31.12.1899). Это может привести к расхождению в 2 дня при импорте данных между платформами.
Способ 1: Преобразование даты в количество дней (базовый метод)
Самый простой способ получить числовое представление даты — изменить формат ячейки. Это не требует формул и работает в 99% случаев:
- Введите дату в ячейку (например,
15.05.2026). - Выделите ячейку и нажмите
Ctrl+1. - В окне
Формат ячееквыберитеЧисловойилиОбщий.
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)
Разберём формулу:
ДАТАЗНАЧ("15.05.2026") - ДАТАЗНАЧ("01.01.1970")— разница в днях между датами.* 86400— перевод дней в секунды (24 часа × 60 минут × 60 секунд).- (ВРЕМЯЗНАЧ("00:00:00") * 86400)— корректировка для времени (если оно указано).
Пример результата:
- 📅
15.05.2026 00:00:00→1715721600 - 📅
01.01.2023 00:00:00→1672531200
⚠️ Внимание: В 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
Как это работает:
ГОД(A1)— извлекает год из даты в ячейкеA1."01.01." & ГОД(A1)— формирует строку с первым днём года (например, "01.01.2026").ДАТАЗНАЧ(A1) - ДАТАЗНАЧ(...)— вычисляет разницу в днях между датой и началом года.+ 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
Как использовать:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Выделите ячейки с датами и запустите макрос (
F5).
2. Power Query (Excel 2016+)
Для импорта данных с автоматическим преобразованием:
- Перейдите на вкладку
Данные → Получить данные → Из таблицы/диапазона. - В редакторе Power Query выделите столбец с датами.
- Нажмите
Преобразовать → Формат → Число. - Примените изменения (
Закрыть и загрузить).
Преимущества Power Query:
- 🔄 Автоматическое обновление при изменении исходных данных.
- 📝 Сохранение шагов преобразования для повторного использования.
- 🔧 Гибкие настройки (например, обработка ошибок).
⚠️ Внимание: При использовании VBA убедитесь, что макросы разрешены в настройках безопасности Excel (Файл → Параметры → Центр управления безопасностью → Параметры центра...). В корпоративных сетях это может быть заблокировано политиками IT-отдела.
Типичные ошибки и как их избежать
Даже опытные пользователи сталкиваются с проблемами при работе с датами в числовом формате. Вот TOP-5 ошибок и способы их решения:
| Ошибка | Причина | Решение |
|---|---|---|
Формула возвращает #ЗНАЧ! |
Ячейка содержит текст, а не дату | Используйте =ДАТАЗНАЧ() или проверьте формат данных |
| Разница в 2 дня между Excel и Google Таблицами | Разные точки отсчёта (1900 vs 1899) | Добавьте/вычтите 2 дня вручную или используйте =ДАТА(год;месяц;день) |
| Отрицательные числа при вычитании дат | Даты перепутаны местами (конец - начало вместо начало - конец) |
Поменяйте порядок ячеек или используйте =АБС() для модуля |
| Некорректное UNIX-время | Не учтена временная зона или миллисекунды | Уточните требования системы (UTC или локальное время, секунды или миллисекунды) |
| Дробные числа вместо целых | В ячейке хранится дата + время | Используйте =ЦЕЛОЕ() или =ОКРВНИЗ() для округления |
Чтобы минимизировать ошибки, следуйте простому правилу: всегда проверяйте формат исходных данных. Для этого:
- Выделите ячейку и посмотрите на строку формул — если там отображается
'15.05.2026(с апострофом), это текст. - Используйте функцию
=ТИП():=ТИП(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.