Excel показывает дату как текст: причины и 7 способов решения

Вы открыли файл Excel, а вместо привычных дат в ячейках — странные числа или текстовые строки вроде 44197 вместо 01.01.2021? Или после импорта из все даты превратились в левые символы? Это классическая проблема, с которой сталкивается каждый пятый пользователь. Причины кроются в неверном формате ячеек, ошибках при копировании данных или особенностях экспорта из внешних систем.

Чаще всего Excel воспринимает даты как текст при импорте из CSV, XML или баз данных, где формат хранения отличается от внутренней логики программы. Но даже при ручном вводе можно получить текст вместо даты — например, если ввести 31.02.2023 (несуществующая дата) или использовать нестандартный разделитель. В этой статье разберём все сценарии, почему так происходит, и дадим пошаговые инструкции по исправлению — от простого изменения формата до сложных случаев с макросами.

Особенно актуальна проблема для бухгалтеров, аналитиков и логистов, которые работают с большими массивами данных. Ошибка формата может сломать формулы ДАТАМЕС(), РАЗНДАТ() или сортировку по датам — а это критично для отчётности. Но хорошая новость: в 90% случаев проблема решается за 2-3 клика, если знать, куда смотреть.

Почему Excel воспринимает дату как текст: 5 основных причин

Первое, что нужно понять: Excel хранит даты не как текст, а как числа, где 1 соответствует 01.01.1900 (в системе Windows) или 01.01.1904 (на Mac). Все операции с датами — это арифметические действия над этими числами. Когда программа видит текст вместо числа, она не может применить к нему датные функции.

Вот ключевые причины, почему даты превращаются в текст:

  • 📥 Импорт из внешних источников: CSV, JSON, базы данных (MySQL, ) часто передают даты в текстовом формате, особенно если разделитель нестандартный (точка вместо косой черты).
  • 🖥️ Региональные настройки: Если в системе установлен формат даты ММ/ДД/ГГГГ, а вы вводите ДД.ММ.ГГГГ, Excel не распознаёт значение как дату.
  • 📋 Копирование из веб или других программ: При вставке через Ctrl+V формат может сбиваться, особенно если источник — веб-страница или PDF.
  • 🔢 Некорректный ввод: Даты вроде 31.02.2023 или 2023-13-01 автоматически становятся текстом — Excel не может их интерпретировать.
  • 📊 Ошибки при связывании данных: Если даты подтягиваются через Power Query или ВПР, а источник передаёт их как строки, формат не конвертируется.

Самый простой способ проверить, текст у вас или дата — посмотреть на выравнивание в ячейке. Даты по умолчанию выравниваются по правому краю, а текст — по левому. Также можно кликнуть на ячейку: если в строке формул вы видите '31.12.2023 (с апострофом), это точно текст.

📊 Как часто вы сталкиваетесь с проблемами формата дат в Excel?
Постоянно
Иногда
Редко
Никогда

Как быстро преобразовать текст в дату: 3 способа без формул

Если даты уже в таблице, но отображаются как текст, исправить это можно за несколько секунд. Вот три самых быстрых метода:

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

  1. Выделите проблемные ячейки.
  2. Нажмите Ctrl+1 (или правая кнопка → Формат ячеек).
  3. Вкладка Число → выберите Дата и нужный формат (например, 14.03.2001).
  4. Нажмите ОК.

Если после этого в ячейках остались левые числа (например, 44197), значит, текст не был распознан как дата. Переходите к следующему способу.

Способ 2: Текст по столбцам

Этот метод работает, если даты в текстовом формате, но имеют корректную структуру (например, 2023-12-31).

  1. Выделите столбец с датами.
  2. Перейдите в Данные → Текст по столбцам.
  3. Выберите С разделителямиДалее.
  4. Снимите все галочки с разделителей (запятая, табуляция и т.д.) → Далее.
  5. На шаге "Формат данных столбца" выберите Дата и укажите исходный формат (например, ГМД для 2023-12-31).
  6. Нажмите Готово.

Способ 3: Двойной клик по маркеру заполнения

Иногда достаточно "разбудить" Excel, чтобы он пересчитал форматы:

  1. В пустой ячейке рядом введите 1.
  2. Выделите эту ячейку и ячейку с текстовой датой.
  3. Потяните за маркер заполнения (маленький квадратик в правом нижнем углу) вниз на 2-3 строки.
  4. Удалите вспомогательный столбец — даты должны обновиться.

Убедитесь, что в тексте нет лишних символов (кавычки, апострофы)

Проверьте региональные настройки (Файл → Параметры → Язык)

Сохраните копию файла перед массовыми изменениями

Попробуйте преобразовать 1-2 ячейки вручную для теста-->

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

Если даты stored как текст в нестандартном формате (например, 31 дек 2023 или 2023/12/31 14:30), придётся использовать формулы. Вот самые универсальные варианты:

1. Функция ДАТАЗНАЧ() (DATEVALUE)

Преобразует текстовый формат даты в числовой. Работает только с датами без времени!

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

Пример: если в A1 написано "31.12.2023", формула вернёт 45266 (что соответствует этой дате).

2. Комбинация ЛЕВСИМВ() + ПСТР() + ДАТА()

Если дата в формате ДД-МММ-ГГГГ (например, 31-дек-2023), используйте:

=ДАТА(ПСТР(A1;8;4); ПОИСКПОЗ(ЛЕВСИМВ(ПСТР(A1;4;3));{"янв";"фев";"мар";"апр";"май";"июн";"июл";"авг";"сен";"окт";"ноя";"дек";};0); ДАТАЗНАЧ("1-"&ЛЕВСИМВ(ПСТР(A1;4;3))&"-2023")); ЛЕВСИМВ(A1;2))

Эта формула разбирает строку на день, месяц и год, затем собирает их в корректную дату.

3. ЗАМЕНИТЬ() + ДАТАЗНАЧ() для нестандартных разделителей

Если дата в формате ДД/ММ/ГГГГ, но Excel её не распознаёт:

=ДАТАЗНАЧ(ЗАМЕНИТЬ(ЗАМЕНИТЬ(A1;"/";".");" ";""))

4. Для дат с временем: ДАТАЗНАЧ() + ВРЕМЗНАЧ()

=ДАТАЗНАЧ(ЛЕВСИМВ(A1;10)) + ВРЕМЗНАЧ(ПСТР(A1;12;8))

1) Нет ли в тексте лишних пробелов (используйте =ПЕЧСИМВ(A1) для очистки)

2) Соответствует ли разделитель в тексте региональным настройкам Excel

3) Не содержит ли текст недопустимые символы (например, 31.12.2023г.)-->

Ошибки при импорте данных: как избежать текстового формата

Чаще всего проблемы с датами возникают при импорте из внешних систем. Вот типичные сценарии и их решения:

Источник данных Типичная проблема Решение
CSV/TXT Даты в формате YYYY-MM-DD становятся текстом Используйте Текст по столбцам с указанием формата ГМД
, SQL Даты передаются как строки с миллисекундами (2023-12-31T00:00:00) Обрежьте лишние символы: =ЛЕВСИМВ(A1;10), затем ДАТАЗНАЧ()
Google Sheets При копировании формат сбивается на текст Экспортируйте в XLSX вместо CSV, или используйте =ИМПОРТДИАПАЗОН()
PDF/Word Даты копируются с неразрывными пробелами Очистите текст: =ПЕЧСИМВ(ЗАМЕНИТЬ(A1;СИМВОЛ(160);" "))
JSON/XML Даты в формате timestamp (1672444800) Преобразуйте через: =ДАТА(1970;1;1)+A1/86400

Особое внимание уделите импорту из : часто даты передаются в формате ДД.ММ.ГГГГ 0:00:00. Чтобы очистить время, используйте:

=ЦЕЛОЕ(A1)

Критичный нюанс: при импорте через Power Query даты могут конвертироваться в локальный формат. Всегда проверяйте столбец на этапе загрузки и при необходимости меняйте тип данных на "Дата" вручную.

Что делать, если даты в формате Юлианской даты (например, 2459945)

Юлианская дата — это количество дней с 1 января 4713 года до н.э. Чтобы преобразовать её в обычную дату, используйте формулу:

=ДАТА(1900;1;1)+A1-2415021

Где 2415021 — разница между 1.01.1900 и началом юлианского периода.

Макросы для массового преобразования: когда ручные методы неэффективны

Если у вас тысячи строк с текстовыми датами, ручное исправление займёт часы. В таких случаях поможет VBA-макрос. Вот готовый код для преобразования всего выделенного диапазона:

Sub ConvertTextToDate()

Dim rng As Range

Dim cell As Range

Set rng = Selection

For Each cell In rng

If IsDate(cell.Value) Then

cell.Value = CDate(cell.Value)

cell.NumberFormat = "dd.mm.yyyy"

End If

Next cell

End Sub

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

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

Для дат в нестандартном формате (например, 31дек2023) используйте модифицированный код:

Sub ConvertCustomTextToDate()

Dim rng As Range

Dim cell As Range

Set rng = Selection

For Each cell In rng

Dim original As String

original = cell.Value

' Удаляем все нецифровые символы кроме "дек", "янв" и т.д.

original = Replace(original, "янв", "01")

original = Replace(original, "фев", "02")

' ... добавьте остальные месяцы

original = Replace(original, "дек", "12")

' Преобразуем в дату

If IsDate(original) Then

cell.Value = CDate(original)

cell.NumberFormat = "dd.mm.yyyy"

End If

Next cell

End Sub

⚠️

Внимание: Перед запуском макроса сохраните файл в формате .xlsm (с поддержкой макросов) и убедитесь, что в настройках безопасности разрешено выполнение скриптов (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Настройка макросов → Включить все макросы).

Как предотвратить преобразование дат в текст при экспорте

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

  • 📤 При экспорте в CSV: Сохраняйте файл с расширением .csv, но предварительно установите для столбца с датами формат dd.mm.yyyy. Используйте Файл → Сохранить как → CSV (разделители — запятые).
  • 🔄 При копировании в другие программы: Используйте Специальная вставка → Значения, а не стандартное Ctrl+V. Это сохранит числовой формат дат.
  • 📊 При связывании с Power BI или Tableau: В источниках данных явно указывайте тип столбца как "Дата", а не "Текст".
  • 📥 При импорте в : Используйте формат XLSX вместо CSV, или настройте правила конвертации в обработке загрузки.

Если вы часто обмениваетесь данными с коллегами, договоритесь о едином формате дат. Например, ГГГГ-ММ-ДД (ISO 8601) универсально распознаётся большинством систем.

Частые ошибки и как их избежать

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

1. Несоответствие региональных настроек

Если в системе установлен американский формат ММ/ДД/ГГГГ, а вы вводите 01.12.2023, Excel воспримет это как 1 декабря (если день ≤12) или выдаст ошибку. Решение:

  • Проверьте настройки: Файл → Параметры → Дополнительно → Разделитель десятичных и разделитель тысяч.
  • Используйте Текст по столбцам с явным указанием формата.

2. Лишние символы в тексте

Даты вроде 31.12.2023 г. или [31.12.2023] не преобразуются автоматически. Очищайте данные:

=ДАТАЗНАЧ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;" г.";"");"[";"");"]";""))

3. Ошибки в формулах с датами

Если вы видите #ЧИСЛО! в формулах вроде РАЗНДАТ(), проверьте:

  • Что оба аргумента — реальные даты (а не текст).
  • Что первая дата не позже второй (в РАЗНДАТ порядок важен).

4. Проблемы с временными зонами

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

=A1 - (B1/24)

где B1 — количество часов разницы.

5. Потеря дат при конвертации в CSV

Некоторые программы (например, Notepad++) при сохранении CSV могут искажать кодировку дат. Всегда открывайте CSV через Excel или специализированные редакторы вроде LibreOffice Calc.

⚠️

Внимание: Если вы работаете с историческими датами до 1900 года, помните, что Excel для Windows не поддерживает даты раньше 01.01.1900 (в маке минимум — 01.01.1904). Для таких случаев используйте текстовый формат или специализированные надстройки.

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

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

Это означает, что столбец слишком узкий для отображения даты. Растяните его вручную или используйте автоподбор ширины (Формат → Автоподбор ширины столбца). Также проверьте, что в ячейке действительно дата, а не ошибка (например, #ЗНАЧ! от формулы).

Как преобразовать текст в дату, если месяц написан словами (например, "31 декабря 2023")?

Используйте комбинацию функций для извлечения дня, месяца и года:

=ДАТА(ПРАВСИМВ(A1;4); ПОИСКПОЗ(ПСТР(A1;НАЙТИ(" ";A1)+1;3);{"января";"февраля";"марта";"апреля";"мая";"июня";"июля";"августа";"сентября";"октября";"ноября";"декабря"};0); ДАТАЗНАЧ("1-"&ПСТР(A1;НАЙТИ(" ";A1)+1;3)&"-2023")); ЛЕВСИМВ(A1;2))

Для упрощения можно создать таблицу соответствия месяцев и использовать ВПР.

Можно ли автоматически преобразовывать даты при открытии файла?

Да, с помощью макроса Workbook_Open. Добавьте этот код в модуль ThisWorkbook:

Private Sub Workbook_Open()

Dim ws As Worksheet

Dim rng As Range

For Each ws In ThisWorkbook.Worksheets

Set rng = ws.UsedRange

Call ConvertTextToDate(rng)

Next ws

End Sub

Sub ConvertTextToDate(rng As Range)

Dim cell As Range

For Each cell In rng

If IsDate(cell.Value) And cell.NumberFormat = "@" Then

cell.Value = CDate(cell.Value)

cell.NumberFormat = "dd.mm.yyyy"

End If

Next cell

End Sub

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

Почему функция ДАТАЗНАЧ не работает с моей датой?

Вероятные причины:

  • В тексте есть лишние символы (пробелы, кавычки, скобки).
  • Формат даты не соответствует региональным настройкам (например, ММ-ДД-ГГГГ вместо ДД-ММ-ГГГГ).
  • Даты до 1900 года (в Windows Excel их не поддерживает).
  • Текст содержит время (например, 31.12.2023 14:30 — используйте ДАТАЗНАЧ(ЛЕВСИМВ(A1;10))).

Проверьте текст с помощью =ТИП(A1) — если результат 2, это текст.

Как экспортировать даты в Google Sheets без потери формата?

При экспорте в Google Sheets:

  1. Сохраните файл в формате .xlsx.
  2. Загрузите его в Google Диск и откройте через Google Sheets.
  3. Если даты стали текстом, используйте формулу:
    =ARRAYFORMULA(IFERROR(DATEVALUE(A:A); A:A))

Для обратного экспорта из Google Sheets в Excel используйте Файл → Экспорт → Microsoft Excel (.xlsx).