Когда вы копируете данные из внешних источников или импортируете CSV-файлы в Microsoft Excel, даты часто автоматически преобразуются в формат дд.мм.гггг — даже если изначально это были числовые значения (например, 44197 вместо 01.01.2021). Это происходит потому, что Excel хранит даты как последовательные числа, где 1 соответствует 1 января 1900 года (в Windows) или 1904 года (на Mac). Чтобы вернуть исходное число, недостаточно просто изменить формат ячейки — нужны специальные приёмы.
Проблема усложняется, если дата отображается как текст (с зелёным треугольником в углу ячейки) или если файл был сохранён в формате, не поддерживающем числовые данные (например, .txt). В таких случаях стандартное форматирование не сработает, и потребуются формулы или макросы. Ниже разберём все актуальные способы преобразования, включая обходные пути для "упорных" файлов.
Почему Excel автоматически конвертирует числа в даты
Причина кроется в внутренней системе хранения дат в Excel. Программа интерпретирует любое целое число от 1 до 2958465 (максимальная дата — 31.12.9999) как дату, если ячейка имеет формат Общий или Дата. Например:
- 📅 Число
44197→01.01.2021(44197 дней с 01.01.1900). - 📅 Число
1→01.01.1900(или 02.01.1900 в некоторых версиях из-за бага с 1900 годом). - ❌ Число
44197.5→01.01.2021 12:00(дробная часть обозначает время).
Автоматическая конвертация срабатывает при:
- 📥 Импорте данных из
.csv,.txtили баз данных (SQL, Access). - 🖱️ Вводе чисел вручную в ячейки с форматом
Дата. - 🔄 Копировании данных из веб-страниц или других программ (например, Google Sheets).
⚠️ Внимание: Если дата отображается как текст (выровнена по левому краю), её сначала нужно преобразовать в числовой формат с помощью функцииДАТАЗНАЧ()илиVALUE()(в английской версии). Иначе изменение формата ячейки не даст результата.
Способ 1: Изменение формата ячейки (самый быстрый метод)
Если дата уже отображается в ячейке (например, 15.05.2023), но вам нужно увидеть её числовой эквивалент, выполните следующие шаги:
- Выделите ячейку или диапазон с датами.
- Нажмите правой кнопкой мыши и выберите
Формат ячеек...(или используйте горячие клавиши Ctrl+1). - В открывшемся окне перейдите на вкладку
Число→ выберите категориюЧисловой. - Укажите количество десятичных знаков (обычно
0) и нажмитеОК.
Если после этого отображается не число, а дата в другом формате (например, май-23), значит, данные хранятся как текст. Переходите к Способу 3.
| Исходное значение | Формат ячейки | Результат после изменения формата |
|---|---|---|
44197 (введён вручную) |
Дата |
01.01.2021 |
01.01.2021 (отображается как дата) |
Числовой |
44197 |
'44197 (текст с апострофом) |
Числовой |
44197 (но остаётся текстом!) |
Способ 2: Использование функции ДАТАЗНАЧ() для текстовых дат
Если дата хранится как текст (например, после импорта из .csv), простое изменение формата не поможет. В этом случае используйте функцию ДАТАЗНАЧ(), которая преобразует текстовую дату в числовой формат Excel:
=ДАТАЗНАЧ(A1)
Где A1 — ячейка с текстовой датой. После применения функции:
- 🔢 Ячейка будет содержать число (например,
44197для01.01.2021). - 📊 Формат ячейки автоматически станет
Дата, но вы можете изменить его наЧисловой.
Для английской версии Excel используйте DATEVALUE().
⚠️ Внимание: ФункцияДАТАЗНАЧ()не работает с датами в нестандартных форматах (например,01-янв-2021или2021/01/01). Для таких случаев потребуется предварительная обработка с помощьюПОДСТАВИТЬ()илиТЕКСТ().
Убедитесь, что в ячейке нет лишних символов (например, кавычек или пробелов)|Проверьте разделители даты (должны быть точки или тире)|Используйте =ДАТАЗНАЧ(ПОДСТАВИТЬ(A1;"-";".")) для замены разделителей|Примените числовой формат к результату
-->
Способ 3: Формула для извлечения числового значения из даты
Если вам нужно не просто отобразить число, а использовать его в дальнейших расчётах (например, для вычитания или сравнения), используйте одну из этих формул:
=A1*1
=ЗНАЧЕН(A1)
=--A1
Все три варианта преобразуют содержимое ячейки A1 в число, если это возможно. Например:
- 📅 Если в
A1было15.05.2023, формула вернёт45045. - ❌ Если в
A1текст (например,"Дата"), формула вернёт ошибку#ЗНАЧ!.
Для массового преобразования:
- Введите формулу в первую ячейку столбца.
- Протяните маркер автозаполнения вниз.
- Скопируйте результаты (Ctrl+C) и вставьте как
Значения(Ctrl+Shift+V).
Почему двойной минус (=--A1) работает?
Двойной унарный минус — это приём для принудительного преобразования текста в число. Первый минус пытается вычесть значение (если это возможно), второй — возвращает исходное число. Excel автоматически конвертирует текстовые числа (например, "44197") в числовой формат.
Способ 4: Макрос VBA для пакетной обработки
Если дат много (тысячи строк), ручное преобразование займёт слишком много времени. В этом случае поможет макрос на VBA:
- Нажмите Alt+F11, чтобы открыть редактор VBA.
- Вставьте новый модуль (
Insert→Module). - Скопируйте этот код:
Sub ConvertDatesToNumbers()Dim cell As Range
For Each cell In Selection
If IsDate(cell.Value) Then
cell.NumberFormat = "0"
cell.Value = cell.Value
End If
Next cell
End Sub
- Выделите диапазон с датами в Excel и запустите макрос (F5).
Макрос проверяет каждую ячейку в выделенном диапазоне: если значение распознаётся как дата, оно преобразуется в число с форматом 0.
⚠️ Внимание: Макросы работают только в файлах с расширением.xlsm(с поддержкой макросов). Если ваш файл имеет формат.xlsx, сохраните его заново с правильным расширением.
Способ 5: Экспорт и повторный импорт данных
Если ни один из методов не сработал (например, при импорте из старых систем), попробуйте обходной путь:
- Экспортируйте данные в файл
.csv(Файл→Сохранить как→CSV). - Откройте файл в Блокноте и найдите столбец с датами.
- Добавьте перед каждой датой символ
=(например,=01.01.2021). - Сохраните файл и импортируйте его обратно в Excel.
Excel воспримет такие данные как формулы и преобразует их в числовой формат. Этот метод работает даже с "упорными" текстовыми датами.
Альтернатива: импортируйте данные через Power Query (Данные → Получить данные → Из файла → Из текстового/CSV). В редакторе Power Query выберите столбец с датами, кликните правой кнопкой и выберите Преобразовать → В число.
Типичные ошибки и как их избежать
Даже опытные пользователи сталкиваются с проблемами при преобразовании дат в числа. Вот самые распространённые ошибки:
- 🚫 Игнорирование текстового формата: Если дата отображается с зелёным треугольником в углу, её сначала нужно преобразовать в число с помощью
ДАТАЗНАЧ()илиЗНАЧЕН(). - 🚫 Неправильные региональные настройки: В Excel даты интерпретируются согласно региональным параметрам системы. Например,
01.05.2023в России — это 1 мая, а в США — 5 января. Проверьте настройки вФайл→Параметры→Язык. - 🚫 Потеря дробной части: Если исходная дата содержала время (например,
44197.5для полудня), при преобразовании в целое число время будет утеряно. Используйте форматОбщий, чтобы сохранить дробную часть.
| Ошибка | Причина | Решение |
|---|---|---|
| Формат не меняется | Дата хранится как текст | Используйте ДАТАЗНАЧ() или ЗНАЧЕН() |
Неправильная дата (например, 05.01.2023 вместо 01.05.2023) |
Неверные региональные настройки | Измените формат ячейки на Дата и укажите правильный локальный формат |
Ошибка #ЗНАЧ! в формуле |
Ячейка содержит некорректный текст | Проверьте данные на лишние символы или пробелы |
FAQ: Частые вопросы по преобразованию дат в числа
Можно ли вернуть исходное число, если дата была скопирована из веб-страницы?
Да, но сначала проверьте, не содержит ли ячейка скрытые HTML-теги или неразрывные пробелы. Используйте функцию =ЧИСТ(A1) для очистки текста, а затем применяйте ДАТАЗНАЧ().
Почему после преобразования число отрицательное (например, -1234)?
Это означает, что дата относится к периоду до 1900 года (или 1904 года на Mac). Excel не поддерживает отрицательные даты в стандартном формате. Используйте пользовательский формат или макросы для работы с такими значениями.
Как преобразовать дату в число в Google Sheets?
В Google Таблицах используйте ту же функцию =ДАТАЗНАЧ(A1) (или =DATEVALUE(A1) в английской версии). Альтернатива — формула =A1*1.
Можно ли автоматизировать преобразование для новых данных?
Да, с помощью Power Query или макросов. Настройте правило преобразования при импорте: Данные → Получить данные → Из файла → выберите столбец → Преобразовать → В число.
Почему в некоторых ячейках вместо числа отображается ########?
Это означает, что столбец слишком узкий для отображения числа. Расширьте столбец или измените формат на Общий. Также проверьте, не является ли значение отрицательным (Excel не отображает отрицательные даты).