Работа с датами в Microsoft Excel часто требует нестандартных решений — особенно когда нужно представить дату не как числовое значение (которое программа воспринимает по умолчанию), а как обычный текст. Например, при экспорте данных в другие системы, где формат даты должен быть строго текстовой строкой, или при создании отчётов с фиксированным отображением.
Проблема в том, что Excel хранит даты как последовательные числа (начиная с 1 января 1900 года), а не как строки. При копировании такой ячейки в текстовый редактор или базу данных вы рискуете получить не «31 декабря 2026 года», а число вроде 45684. Чтобы этого избежать, придётся применить один из методов конвертации — от простых функций до VBA-скриптов.
В этой статье разберём 5 надёжных способов преобразовать дату в текст, включая нюансы для разных версий Excel (2010–2023 и Microsoft 365). Особое внимание уделим сохранению формата при экспорте и типичным ошибкам, которые портят результат.
Почему Excel хранит даты как числа, а не как текст?
На первый взгляд нелогично, что программа для работы с таблицами не сохраняет даты в привычном текстовом виде. На то есть три причины:
- 📅 Вычисления и сортировка. Числовой формат позволяет легко прибавлять дни, вычитать месяцы или сравнивать даты (например,
=A1>B1для проверки, какая дата позже). С текстом такие операции невозможны без дополнительных функций. - 📊 Экономия памяти. Хранение даты как числа (например,
45684вместо «31.12.2026») занимает меньше места в файле, особенно в больших таблицах. - 🔄 Гибкость отображения. Одно число можно отформатировать как
ДД.ММ.ГГГГ,Месяц ГГГГили даже1-й квартал 2026— без изменения исходных данных.
Однако в некоторых сценариях числовой формат становится проблемой. Например:
- 📤 При экспорте в CSV или JSON даты преобразуются в числа, которые другие программы не распознают.
- 📝 В шаблонах договоров или квитанций требуется фиксированное текстовое отображение (например, «пятница, 13 октября 2023 г.»).
- 🔍 При поиске по таблице функция
НАЙТИне сработает с датой в числовом формате.
Прежде чем переходить к методам конвертации, запомните: текстовая дата перестаёт быть «датой» для Excel. Вы не сможете прибавить к ней день или отсортировать ячейки по времени — только как строки (по алфавиту). Если это критично, рассмотрите альтернативы, например, добавление отдельного столбца с текстовой копией.
Способ 1: Функция ТЕКСТ (TEXT) — самый простой вариант
Функция ТЕКСТ (или TEXT в английской версии) — это стандартный инструмент для преобразования чисел и дат в текст с заданным форматом. Синтаксис:
=ТЕКСТ(значение; "формат")
Где:
значение— ячейка с датой (например,A1) или сама дата в форматеДАТА(2026;12;31)."формат"— строка с шаблоном отображения (подробнее ниже).
Примеры форматирования:
| Формат | Пример кода | Результат для 31.12.2026 |
|---|---|---|
"дд.мм.гггг" |
=ТЕКСТ(A1; "дд.мм.гггг") |
31.12.2026 |
"dd mmmm yyyy" |
=ТЕКСТ(A1; "dd mmmm yyyy") |
31 декабря 2026 |
"дд-мм-гг" |
=ТЕКСТ(A1; "дд-мм-гг") |
31-12-24 |
"[$-419]д ммм гг;@" |
=ТЕКСТ(A1; "[$-419]д ммм гг;@") |
31 дек 24 |
"день dd, месяц mm, год yyyy" |
=ТЕКСТ(A1; "день dd, месяц mm, год yyyy") |
день 31, месяц 12, год 2026 |
Для английской версии Excel используйте латинские обозначения: "mm/dd/yyyy" вместо "дд.мм.гггг".
Ячейка с датой имеет формат "Дата" (не "Общий" или "Текстовый")|
Формат в функции написан в кавычках и с правильным регистром|
Учтена локализация Excel (русская/английская версия)|
Результат проверен на тестовой дате (например, 15.07.2023)-->
⚠️ Внимание: Если в ячейкеA1уже хранится текст (например, введённая вручную дата как строка), функцияТЕКСТне сработает. Сначала преобразуйте её в дату с помощью=ДАТАЗНАЧ(A1).
Преимущества метода:
- ✅ Не требует VBA или макросов.
- ✅ Гибкость форматирования (можно вывести день недели, название месяца и т.д.).
- ✅ Работает во всех версиях Excel.
Недостатки:
- ❌ Результат — текст, непригодный для вычислений.
- ❌ При изменении исходной даты формулу придётся обновлять вручную (если не использовать ссылки).
Способ 2: Форматирование ячейки как текста + ручной ввод
Если вам нужно ввести дату сразу как текст (например, при заполнении шаблона), можно заранее установить текстовый формат для ячейки. Для этого:
- Выделите ячейку или диапазон (например,
A1:A10). - Нажмите правой кнопкой →
Формат ячеек(илиCtrl+1). - Вкладка
Число→ выберитеТекстовый→ОК. - Введите дату вручную (например, 31.12.2026).
Excel не преобразует введённое значение в число, а сохранит его как строку. Этот метод подходит для:
- 📋 Шаблонов документов, где дата должна оставаться неизменной.
- 📂 Экспорта данных в системы, не поддерживающие числовые даты.
- 🔍 Поиска по таблице с использованием функции
НАЙТИ.
⚠️ Внимание: При копировании текстовой даты в ячейку с форматомДатаExcel может автоматически конвертировать её обратно в число. Чтобы избежать этого, используйтеСпециальная вставка→Значения.
Минусы метода:
- ❌ Невозможно автоматически обновлять дату (например, прибавлять дни).
- ❌ При импорте данных из других источников формат может сбиться.
Что делать, если Excel автоматически меняет текстовый формат на дату?
Даже при текстовом формате ячейки Excel иногда «угадывает» даты и преобразует их. Чтобы этого избежать:
1. Перед вводом добавьте апостроф: '31.12.2026 (он будет невидимым).
2. Или используйте нестандартный разделитель, например, точку с запятой: 31;12;2026.
3. В настройках Excel (Файл → Параметры → Дополнительно) снимите галочку «Автоматически заменять текст датами».
Способ 3: Функция TEXTJOIN (для Excel 2016 и новее)
Функция ТЕКСТСЦЕП (или TEXTJOIN) появилась в Excel 2016 и позволяет объединять несколько значений в одну текстовую строку с разделителем. Её можно использовать для создания кастомного текстового представления даты.
Синтаксис:
=ТЕКСТСЦЕП(разделитель; игнорировать_пустые; текст1; [текст2]; ...)
Пример: чтобы получить дату в формате «31 декабря 2026 года», используйте:
=ТЕКСТСЦЕП(" "; ИСТИНА; ДЕНЬ(A1); ТЕКСТ(A1; "mmmm"); ГОД(A1); "года")
Разберём по шагам:
ДЕНЬ(A1)— извлекает день (31).ТЕКСТ(A1; "mmmm")— возвращает полное название месяца («декабря»).ГОД(A1)— извлекает год (2026)."года"— добавляет статичный текст.
Преимущества:
- ✅ Полный контроль над форматированием (можно добавить любые слова или символы).
- ✅ Работает с динамическими данными (при изменении даты в
A1текст обновляется автоматически).
Недостатки:
- ❌ Доступна только в Excel 2016 и новее (в старых версиях используйте
СЦЕПИТЬилиCONCATENATE). - ❌ Длинная формула для простых задач.
Способ 4: VBA-макрос для массовой конвертации
Если вам нужно преобразовать тысячи строк с датами в текст, ручные методы будут неэффективны. В этом случае поможет макрос на VBA (Visual Basic for Applications).
Алгоритм действий:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - В меню выберите
Insert → Module. - Вставьте следующий код:
Sub ConvertDatesToText()
Dim rng As Range
Dim cell As Range
' Выбираем диапазон с датами (например, столбец A)
Set rng = Selection
' Отключаем обновление экрана для ускорения
Application.ScreenUpdating = False
For Each cell In rng
If IsDate(cell.Value) Then
' Преобразуем дату в текст с форматом "дд.мм.гггг"
cell.NumberFormat = "@" ' Текстовый формат
cell.Value = Format(cell.Value, "dd.mm.yyyy")
End If
Next cell
Application.ScreenUpdating = True
MsgBox "Конвертация завершена!", vbInformation
End Sub
Как использовать:
- Выделите диапазон с датами (например,
A1:A1000). - Запустите макрос (
F5или кнопкаRunв редакторе VBA). - Готово! Все даты в выделенном диапазоне станут текстом.
Преимущества:
- ✅ Обрабатывает большие объёмы данных за секунды.
- ✅ Можно настроить любой формат вывода (изменив
"dd.mm.yyyy"в коде).
⚠️ Внимание: Перед запуском макроса сохраните файл с расширением .xlsm (включающим поддержку макросов). В противном случае Excel заблокирует выполнение скрипта.
Альтернативный вариант — использовать User Defined Function (UDF):
Function DateToText(rng As Range, Optional format As String = "dd.mm.yyyy") As String
If IsDate(rng.Value) Then
DateToText = Format(rng.Value, format)
Else
DateToText = "Некорректная дата"
End If
End Function
Теперь в любой ячейке можно вызвать =DateToText(A1; "dd mmmm yyyy").
Способ 5: Power Query (для Excel 2016 и новее)
Power Query — мощный инструмент для трансформации данных, доступный в Excel 2016 и новее (а также в Microsoft 365). Он позволяет конвертировать даты в текст с сохранением связи с источником.
Пошаговая инструкция:
- Выделите таблицу с датами (включая заголовки).
- Перейдите на вкладку
Данные→Из таблицы/диапазона(илиGet Data → From Table/Range). - В открывшемся редакторе Power Query выделите столбец с датами.
- На вкладке
ТрансформациявыберитеФормат → Датаи укажите нужный формат (например,ДД.ММ.ГГГГ). - Щёлкните правой кнопкой по столбцу →
Преобразовать → В текст. - Нажмите
Закрыть и загрузить, чтобы вернуть данные в Excel.
Преимущества:
- ✅ Не разрушает исходные данные (создаёт копию).
- ✅ Позволяет автоматизировать процесс (обновление при изменении источника).
- ✅ Поддерживает сложные преобразования (например, объединение нескольких столбцов).
Пример использования:
Если у вас есть столбец A с датами рождения, а нужно получить текстовый столбец в формате «День.Месяц.Год (возраст)», в Power Query можно:
- Добавить пользовательский столбец с формулой:
= Date.ToText([Дата рождения], "dd.MM.yyyy") & " (" & Text.From(Date.From([Дата рождения])) & ")"
Это создаст строку вида: «15.07.1990 (15.07.1990)».
Как обновить данные после изменений в Power Query?
После редактирования исходной таблицы:
1. Перейдите на вкладку Данные.
2. Нажмите Обновить все (или Refresh All).
3. Все связанные таблицы и отчёты обновятся автоматически.
Типичные ошибки и как их избежать
Даже опытные пользователи Excel сталкиваются с проблемами при конвертации дат в текст. Вот самые распространённые ошибки и их решения:
| Ошибка | Причина | Решение |
|---|---|---|
| Вместо даты отображается число (например, 45684) | Ячейка имеет формат Общий, а не Текстовый |
Установите формат Текстовый ДО ввода данных или используйте =ТЕКСТ(A1; "дд.мм.гггг") |
Функция ТЕКСТ возвращает #ЗНАЧ! |
В ячейке не дата, а текст (например, "31.12.2026") | Преобразуйте текст в дату с помощью =ДАТАЗНАЧ(A1), затем примените ТЕКСТ |
| После экспорта в CSV даты становятся числами | CSV не сохраняет форматы ячеек | Предварительно конвертируйте даты в текст функцией ТЕКСТ или макросом |
| Макрос не работает | Файл сохранён без поддержки макросов (.xlsx) |
Сохраните файл как .xlsm и разрешите выполнение макросов в настройках безопасности |
TEXTJOIN не распознаётся |
Используется Excel старше 2016 года | Замените на СЦЕПИТЬ или обновите Excel |
Критическая ошибка: если вы конвертируете даты в текст для дальнейших вычислений (например, разницы в днях), используйте отдельный столбец с оригинальными датами. Текстовые даты непригодны для математических операций!
Ещё одна ловушка — локализация. В русской и английской версиях Excel разные обозначения формата:
- Русская версия:
"дд.мм.гггг" - Английская версия:
"dd/mm/yyyy"
Если скопировать формулу из англоязычного источника, Excel выдаст ошибку.
FAQ: Частые вопросы по конвертации дат в текст
Можно ли вернуть текстовую дату обратно в числовой формат?
Да, но только если текст соответствует стандартному формату даты. Используйте функцию =ДАТАЗНАЧ(A1) (или DATEVALUE в английской версии). Например:
=ДАТАЗНАЧ("31.12.2026")
Если формат нестандартный (например, «31 декабря 2026 года»), потребуется парсинг с помощью ПОИСК, ЛЕВСИМВ и других функций.
Почему после конвертации даты сортируются неправильно?
Текстовые даты сортируются по алфавиту, а не по времени. Например, «12.01.2026» окажется выше «2.01.2026», потому что «1» идёт перед «2» в первом символе. Решения:
- Сортируйте по оригинальному столбцу с датами (в числовом формате).
- Используйте формат
"гггг.мм.дд"для текстовой сортировки (например, «2026.01.12»).
Как конвертировать время (часы:минуты) в текст?
Аналогично датам, но с другим форматом. Примеры:
=ТЕКСТ(A1; "чч:мм") ' 14:30
=ТЕКСТ(A1; "чч:мм:сс") ' 14:30:45
=ТЕКСТ(A1; "[ч]:мм") ' 36:30 (если время > 24 часов)
Для добавления AM/PM используйте "чч:мм AM/PM".
Можно ли автоматически обновлять текстовые даты при изменении исходных данных?
Да, если использовать формулы (ТЕКСТ, ТЕКСТСЦЕП) или Power Query. При этом:
- Формулы обновляются автоматически при изменении исходной ячейки.
- В Power Query нужно вручную нажимать
Обновить(или настроить автоматическое обновление). - Макросы требуют повторного запуска.
Как экспортировать даты в текстовый файл (TXT/CSV) без потерь?
Чтобы даты в экспортируемом файле оставались читаемыми:
- Создайте отдельный столбец с текстовой версией даты (например,
=ТЕКСТ(A1; "дд.мм.гггг")). - При экспорте в
CSVвыберитеСохранить как → CSV (разделители — запятые). - В диалоговом окне предупреждения выберите
Сохранить текущий формат(если доступно).
Альтернатива: экспортируйте в PDF или XPS, где форматирование сохраняется.