Почему Excel хранит даты как числа и как это исправить
Вы открыли файл Excel и вместо привычных дат вроде «15.05.2026» видите странные числа типа 45415 или 44660? Это не ошибка программы, а особенность хранения дат в электронных таблицах. Дело в том, что Microsoft Excel (как и Google Sheets) внутренне представляет даты как количество дней, прошедших с 1 января 1900 года (в системе Windows) или с 1 января 1904 года (в macOS). Так, число 1 соответствует 1.01.1900, а 44197 — это 1 января 2021 года.
Проблема в том, что пользователи редко сталкиваются с «сырыми» числовыми значениями дат — обычно Excel автоматически применяет формат Дата к ячейкам. Но если данные импортированы из внешнего источника (например, 1С, SQL-базы или CSV-файла), форматирование может сбиться. В этой статье разберём 5 способов преобразовать число в дату — от простого изменения формата до использования формул для сложных случаев.
Важно понимать: преобразование не меняет само значение в ячейке, а только его отображение. Если вы увидите в строке формул число 45415, а в ячейке — «15.05.2026», это нормально. Но иногда требуется не просто отобразить дату, а получить корректное числовое значение для дальнейших расчётов (например, вычисления разницы между датами) — об этом тоже поговорим.
Способ 1: Изменение формата ячейки (самый быстрый метод)
Если числа в вашей таблице уже являются датами в внутреннем формате Excel (например, 44197 вместо «01.01.2021»), достаточно применить правильное форматирование. Этот метод работает в 90% случаев и занимает меньше минуты:
- Выделите ячейки с числами, которые нужно преобразовать.
- Нажмите правой кнопкой мыши и выберите
Формат ячеек...(или используйте сочетание клавишCtrl+1). - В открывшемся окне перейдите на вкладку
Число→ выберите категориюДата. - Укажите нужный формат (например,
14.03.2012или14 марта 2012 г.) и нажмитеОК.
Если после этих действий вместо даты отображается «######», значит:
- 🔢 Ширина столбца слишком мала — расширьте его двойным кликом по правой границе заголовка.
- 📅 Число выходит за пределы поддерживаемых дат (в Excel это с 01.01.1900 по 31.12.9999).
- ⚠️ Число не является датой — возможно, это просто номер (например,
12345не может быть датой).
Способ 2: Формула ДАТАЗНАЧ для текстового формата
Часто числа, которые должны быть датами, хранятся как текст (например, после импорта из CSV или копирования с веб-сайта). В этом случае простое изменение формата не поможет — нужно использовать функцию ДАТАЗНАЧ (или DATEVALUE в английской версии). Она преобразует текстовый формат даты (например, "15.05.2026") в числовой, который затем можно отформатировать как дату.
Примеры использования:
=ДАТАЗНАЧ("15.05.2026") → вернёт 45415 (числовой формат даты)
=ДАТАЗНАЧ(A1) → преобразует текст из ячейки A1 в дату
Обратите внимание на нюансы:
- 📌 Функция работает только с текстом в формате «дд.мм.гггг» или «дд/мм/гггг». Если дата записана как
"15-05-2026", формула вернёт ошибку#ЗНАЧ!. - 🌍 В английской версии Excel разделителем по умолчанию является
"/", а не".". Если формула не работает, замените точки на слэши. - ⏳ Если год указан двухзначным числом (например,
"15.05.24"), Excel автоматически преобразует его в2026(для значений 00–29) или1924(для 30–99).
⚠️ Внимание: Если в ячейке уже стоит числовой формат (например,15052026вместо15.05.2026), функцияДАТАЗНАЧне сработает. В этом случае используйте комбинацию функцийДАТА,ЛЕВСИМВиПСТР(см. Способ 4).
Способ 3: Формула ДАТА для разборки числа на день, месяц, год
Если дата хранится в виде числа без разделителей (например, 15052026 вместо 15.05.2026), придётся вручную «разобрать» его на компоненты. Для этого используйте функцию ДАТА (или DATE) вместе с текстовыми функциями:
=ДАТА(ПСТР(A1;5;4); ПСТР(A1;3;2); ЛЕВСИМВ(A1;2))
Разберём формулу по частям:
ПСТР(A1;5;4)— извлекает год (начиная с 5-го символа, длиной 4 знака).ПСТР(A1;3;2)— извлекает месяц (начиная с 3-го символа, длиной 2 знака).ЛЕВСИМВ(A1;2)— извлекает день (первые 2 символа).
После ввода формулы не забудьте применить к ячейке формат Дата, иначе вы увидите число типа 45415. Этот метод универсален и работает даже если разделители в дате нестандартные (например, 15-05-2026 или 15/05/2026).
Как обработать даты с нестандартными разделителями?
Если дата записана как 15*05*2026 или 15 05 2026, сначала замените разделители на стандартные с помощью функции ПОДСТАВИТЬ:
=ДАТАЗНАЧ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;"*";".");" "; "."))
Эта формула последовательно заменяет "*" и пробел на точки, после чего ДАТАЗНАЧ корректно преобразует текст в дату.
Способ 4: Текст в столбцы (для массового преобразования)
Если у вас сотни или тысячи ячеек с датами в нестандартном формате, вручную писать формулы неэффективно. В этом случае поможет инструмент Текст по столбцам (или Text to Columns в английской версии). Он позволяет разделить содержимое ячейки на части по заданному разделителю и затем собрать их обратно в правильный формат даты.
Пошаговая инструкция:
- Выделите столбец с датами в текстовом формате (например,
15.05.2026или15/05/2026). - Перейдите на вкладку
Данные→ нажмитеТекст по столбцам. - В первом окне мастера выберите
С разделителями→Далее. - Укажите разделитель (точка, слэш, дефис и т. д.) и снимите галочки с других разделителей.
- На шаге
Формат данных столбцавыберите для каждого столбца (день, месяц, год) форматДата (ДМГ). - Нажмите
Готово— Excel автоматически преобразует текст в даты.
Преимущества этого метода:
- ⚡ Быстрота — обработка тысяч строк за секунды.
- 🔄 Гибкость — работает с любыми разделителями (точка, запятая, пробел и др.).
- 📊 Нет формул — результат сохраняется как значения, а не как вычисления.
⚠️ Внимание: Если после примененияТекст по столбцамдаты отображаются как числа (например,45415), не пугайтесь — просто примените к столбцу форматДата(см. Способ 1).
Способ 5: Power Query для сложных случаев
Если ваши данные хранятся в неструктурированном виде (например, даты перемешаны с текстом или хранятся в разных форматах), обычные методы Excel могут не справиться. В этом случае поможет Power Query — инструмент для преобразования и очистки данных, встроенный в Excel 2016 и новее (или как надстройка Get & Transform в Excel 2013).
Пример: у вас есть столбец с данными типа "Заказ от 15.05.2026 на сумму 1000 руб.", и нужно извлечь дату. Алгоритм действий:
- Выделите исходные данные → перейдите на вкладку
Данные→Из таблицы/диапазона(илиGet Data → From Table/Range). - В открывшемся редакторе Power Query выделите столбец → вкладка
Преобразовать→Извлечь → Текст после делителя. - Введите делитель
"от "(с пробелом) — это извлечёт фрагмент"15.05.2026 на сумму...". - Повторите извлечение с делителем
" на ", чтобы оставить только дату. - Выделите столбец с датой → измените тип данных на
Дата(вкладкаПреобразовать→Тип данных → Дата). - Нажмите
Закрыть и загрузить— данные вернутся в Excel в виде отдельного листа или таблицы.
Power Query удобен для:
- 📂 Обработки больших объёмов данных (десятки тысяч строк).
- 🔄 Автоматизации — запрос можно сохранить и обновлять при изменении исходных данных.
- 🛠️ Сложных преобразований (например, когда даты записаны в разных форматах в одном столбце).
Убедитесь, что исходные данные оформлены как таблица (Ctrl+T)
Проверьте, что в столбце нет пустых ячеек или некорректных значений
Сохраните файл перед началом работы (на случай ошибок)
Запомните путь к исходным данным (если они на другом листе или в другом файле)-->
Типичные ошибки и как их избежать
Даже опытные пользователи Excel иногда сталкиваются с проблемами при преобразовании чисел в даты. Вот самые распространённые ошибки и их решения:
| Ошибка | Причина | Решение |
|---|---|---|
Вместо даты отображается ###### |
Слишком узкий столбец или некорректное число | Расширьте столбец или проверьте, что число входит в диапазон 1–2958465 (01.01.1900–31.12.9999) |
Формула ДАТАЗНАЧ возвращает #ЗНАЧ! |
Текст не распознаётся как дата (неверный формат или разделители) | Используйте ПОДСТАВИТЬ для замены разделителей или разберите дату вручную (Способ 3) |
| Дата сдвинута на 4 года (например, 2026 вместо 2028) | В настройках Excel включена система дат 1904 (для macOS) |
Перейдите в Файл → Параметры → Дополнительно и снимите галочку Использовать систему дат 1904 |
После импорта даты стали числами с плавающей запятой (например, 44197.5) |
Число содержит дробную часть (время) | Примените формат Дата с временем или используйте ЦЕЛОЕ(A1) для отсечения дробной части |
Ещё одна частая проблема — автоматическое преобразование дат при импорте. Например, при открытии CSV-файла Excel может самостоятельно конвертировать текстовые даты в числовой формат, что приводит к ошибкам. Чтобы этого избежать:
- 📑 Используйте
Импорт данных(вкладкаДанные→Из текста) вместо простого открытия файла. - 🔍 На шаге выбора формата данных укажите для столбца с датами тип
Текст, а затем преобразуйте их в даты вручную.
=ДАТА(1970;1;1) + (A1/86400)
где A1 — ячейка с timestamp, а 86400 — количество секунд в сутках.-->
FAQ: Ответы на частые вопросы
Почему после преобразования дата отображается как 30.12.1899?
Это означает, что исходное число было 0 или отрицательным. В системе дат Excel 0 соответствует 30.12.1899 (накануне 01.01.1900), а отрицательные числа — датам до 1900 года, которые не поддерживаются. Проверьте исходные данные на корректность.
Как преобразовать дату в обратном направлении (из даты в число)?
Просто измените формат ячейки на Общий или Числовой. Например, дата 15.05.2026 станет числом 45415. Также можно использовать формулу =A1*1, где A1 — ячейка с датой.
Можно ли автоматически преобразовывать даты при вводе?
Да, для этого настройте проверку данных:
- Выделите диапазон ячеек →
Данные → Проверка данных. - На вкладке
Параметрывыберите типДатаи укажите диапазон допустимых значений. - На вкладке
Сообщение для вводадобавьте подсказку (например,"Введите дату в формате ДД.ММ.ГГГГ").
Теперь при вводе некорректной даты Excel будет показывать предупреждение.
Почему в macOS даты сдвигаются на 4 года?
В Excel для Mac по умолчанию используется система дат 1904, где 0 соответствует 01.01.1904 (а не 01.01.1900, как в Windows). Чтобы это исправить, перейдите в Excel → Настройки → Расчёты и снимите галочку Использовать систему дат 1904.
Как обработать даты в формате «Май 15, 2026»?
Используйте комбинацию функций ДАТА и НАЙТИ:
=ДАТА(
ПРАВСИМВ(A1;4); -- год (последние 4 символа)
ПОИСКПОЗ(
ЛЕВСИМВ(ПСТР(A1; НАЙТИ(" ";A1)+1; 3)); -- месяц (преобразуем "Май" в 5)
{"";"Янв";"Фев";"Мар";"Апр";"Май";"Июн";"Июл";"Авг";"Сен";"Окт";"Ноя";"Дек"}
);
ПСТР(A1; НАЙТИ(",";A1)-2; 2) -- день (перед запятой)
)
Не забудьте применить к ячейке формат Дата.