Как преобразовать дату в числовой тип в Excel: от простых методов до продвинутых приёмов

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

Microsoft Excel оперирует датами не как текстовыми строками, а как последовательными числами, где 1 соответствует 1 января 1900 года (в системе Windows) или 1904 года (на Mac). Этот подход позволяет выполнять арифметические операции с датами: вычитать дни, прибавлять месяцы или рассчитывать разницу между событиями. Однако иногда требуется получить чистое числовое значение — например, для интеграции с другими системами, аналитики или создания пользовательских формул.

Типичные сценарии, когда нужно конвертировать дату в число:

  • 📊 Анализ временных рядов — преобразование дат в числовой формат для построения графиков или регрессионных моделей.
  • 🔄 Импорт/экспорт данных — многие базы данных (SQL, Python Pandas) ожидают даты в формате timestamp или UNIX-time.
  • 📅 Расчёт рабочих дней — числовые значения упрощают логику исключения выходных и праздников.
  • 🤖 Автоматизация — скрипты на VBA или Power Query часто требуют числовых входных данных.

Важно понимать разницу между отображением даты (то, что вы видите в ячейке) и её внутренним представлением. Даже если в ячейке отображается 15.05.2026, Excel хранит её как число 45415 (для системы 1900). Наша задача — извлечь это число или преобразовать его в другой числовой формат.

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

Способ 1: Изменение формата ячейки — самый быстрый метод

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

  1. Выделите ячейку (или диапазон) с датой.
  2. Нажмите правой кнопкой мыши и выберите Формат ячеек... (или используйте сочетание Ctrl+1).
  3. В открывшемся окне перейдите на вкладку Число и выберите категорию Общий или Числовой.
  4. Нажмите OK — дата преобразуется в число (например, 45415 для 15 мая 2026 года).

⚠️ Внимание: Этот метод работает только если ячейка изначально содержит корректную дату, а не текст, имитирующий дату (например, строку "15.05.2026"). В последнем случае Excel не распознает её как дату, и изменение формата не поможет.

☑️ Проверка перед изменением формата

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

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

Когда дата хранится как текст (например, после импорта из CSV или базы данных), функция ДАТАЗНАЧ() (или DATEVALUE() в английской версии) преобразует её в числовой формат. Синтаксис:

=ДАТАЗНАЧ("15.05.2026")

Особенности работы функции:

  • 🔍 Распознаёт большинство текстовых форматов дат, включая "15/05/2026", "15-05-2026", "15 мая 2026".
  • ❌ Не работает с датами, содержащими время (например, "15.05.2026 14:30"). Для них используйте ДАТАЗНАЧ+ВРЕМЯЗНАЧ.
  • 🌍 Зависит от региональных настроек Excel — если формат текста не совпадает с настройками системы, вернёт ошибку #ЗНАЧ!.

Пример использования с динамической ссылкой:

=ДАТАЗНАЧ(A1)

где A1 — ячейка с текстовой датой.

Способ 3: Формулы для извлечения компонентов даты

Иногда требуется не само внутреннее число Excel, а отдельные компоненты даты — день, месяц или год — в числовом виде. Для этого используйте:

КомпонентФункцияПример результатаПримечание
ДеньДЕНЬ()15 для 15.05.2026Возвращает число от 1 до 31
МесяцМЕСЯЦ()5 для маяЧисло от 1 (январь) до 12 (декабрь)
ГодГОД()2026Полный год (4 цифры)
День неделиДЕНЬНЕД()4 (среда, если 1=воскресенье)Зависит от настроек системы
Номер неделиНОМНЕДЕЛИ()20 для мая 2026Тип возвращаемого значения настраивается

Пример комбинированной формулы для получения даты в формате ГГГГММДД:

=ГОД(A1)&ТЕКСТ(МЕСЯЦ(A1);"00")&ТЕКСТ(ДЕНЬ(A1);"00")

Эта формула вернёт 20260515 для даты 15.05.2026, что удобно для сортировки или использования в качестве уникального идентификатора.

Как получить UNIX-time в Excel?

UNIX-time — это количество секунд с 1 января 1970 года. Формула для преобразования даты из ячейки A1:

=(A1-ДАТАЗНАЧ("1/1/1970"))*86400

Обратите внимание: Excel для Windows использует систему дат с 1900 года, поэтому может возникнуть расхождение в 2 дня для дат до 1970 года.

Способ 4: Power Query — для массовой обработки данных

Если вам нужно преобразовать сотни или тысячи дат, ручные методы неэффективны. В этом случае поможет инструмент Power Query (доступен в Excel 2016 и новее):

  1. Выделите исходные данные и перейдите на вкладку ДанныеИз таблицы/диапазона.
  2. В открывшемся редакторе Power Query выделите столбец с датами.
  3. На вкладке Преобразование выберите Тип данных: Дата, затем Тип данных: Число.
  4. Нажмите Закрыть и загрузить — данные преобразуются в числовой формат.

Power Query сохраняет шаги преобразования, поэтому при обновлении исходных данных числовые значения будут пересчитываться автоматически.

⚠️ Внимание: При импорте данных из внешних источников (CSV, SQL) Power Query может автоматически распознавать столбцы как даты. Проверяйте формат на этапе загрузки, чтобы избежать неявных преобразований.

Способ 5: VBA-макрос для автоматизации

Для пользователей, работающих с VBA, доступен гибкий способ преобразования дат в числа с помощью макроса. Пример кода для преобразования выделенного диапазона:

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).

Преимущества метода:

  • Быстродействие — обрабатывает тысячи ячеек за секунды.
  • 🔧 Гибкость — можно модифицировать код для специфических форматов (например, UNIX-time).
  • 🔄 Повторяемость — макрос можно назначить на кнопку или горячую клавишу.

Распространённые ошибки и как их избежать

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

  1. Текст вместо даты: Excel не распознаёт строку "15.05.2026" как дату, если ячейка отформатирована как текст. Решение: используйте ДАТАЗНАЧ() или функцию ЗНАЧЕН() для принудительного преобразования.
  2. Региональные настройки: Формат "05/15/2026" в американских настройках интерпретируется как 15 мая, а в европейских — как 5 ноября. Проверяйте настройки в Файл → Параметры → Язык.
  3. Отрицательные числа: Даты до 1900 года (или 1904 на Mac) могут давать отрицательные значения. Для таких случаев используйте функцию ДАТА() с явным указанием года, месяца и дня.
  4. Потеря точности: При копировании числовых значений дат в другие программы (например, в Python) может теряться дробная часть (время). Используйте формат Общий с достаточным количеством десятичных знаков.

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

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

Можно ли преобразовать дату в число без потери времени (часов и минут)?

Да, для этого используйте комбинацию функций ДАТАЗНАЧ() и ВРЕМЯЗНАЧ():

=ДАТАЗНАЧ(A1)+ВРЕМЯЗНАЧ(A1)

где A1 содержит дату и время в одном формате (например, "15.05.2026 14:30"). Результат будет числом с дробной частью, где целая часть — дата, а дробная — время.

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

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

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

Просто измените формат ячейки на Дата или используйте функцию ТЕКСТ():

=ТЕКСТ(A1; "дд.мм.гггг")

где A1 содержит числовое значение даты.

В чём разница между системами дат 1900 и 1904?

Excel для Windows по умолчанию использует систему 1900, где 1 = 1 января 1900 года. На Mac по умолчанию система 1904, где 0 = 1 января 1904 года. Это приводит к разнице в 1462 дня между платформами. Чтобы проверить текущую систему, используйте формулу:

=ДАТА(1900;1;1)

Если результат 1 — система 1900, если -1461 — 1904.

Можно ли преобразовать дату в UNIX-time без VBA?

Да, используйте формулу:

=(A1-ДАТАЗНАЧ("1/1/1970"))*86400

где A1 — ячейка с датой. Для точности добавьте корректировку на временную зону (в секундах). Например, для Москвы (UTC+3):

=((A1-ДАТАЗНАЧ("1/1/1970"))*86400)+10800