Работа с датами в Microsoft Excel — одна из самых частых задач при анализе данных, составлении отчётов или ведении учёта. Но что делать, когда нужно зафиксировать дату в текстовом формате, чтобы она не изменялась при обновлении файла или не воспринималась как числовое значение? Например, при экспорте данных в другие системы, где требуется строка вместо даты, или при создании неизменяемых отметок времени.
Проблема в том, что Excel по умолчанию хранит даты как серийные числа (где `1` = 1 января 1900 года), а отображает их в читаемом виде благодаря формату ячейки. При копировании таких данных в текстовые поля или базы данных часто возникают ошибки: вместо `"01.01.2026"` передаётся число `45287` или дата автоматически преобразуется в текущий формат системы. В этой статье разберём 5 надёжных способов конвертации дат в текст — от простых функций до автоматизации через VBA, а также типичные ошибки и их решения.
Особое внимание уделим нюансам:
- 🔹 Почему функция
ТЕКСТможет возвращать ошибку#ЗНАЧ!при неверном формате - 🔹 Как сохранить ведущие нули в днях/месяцах (например,
05.03.2026вместо5.3.2026) - 🔹 В каких случаях лучше использовать Power Query, а не формулы
Все методы протестированы в Excel 2010–2023 и Microsoft 365, включая веб-версию. Если вы работаете с Google Sheets, majority способов также применимы с минимальными правками.
1. Функция ТЕКСТ: простой способ с настройкой формата
Самый универсальный метод — использование функции =ТЕКСТ(значение; формат). Она преобразует дату в строку согласно заданному шаблону. Например, чтобы получить дату в формате `"ДД.ММ.ГГГГ"`, используйте:
=ТЕКСТ(A1; "дд.мм.гггг")
Где A1 — ячейка с исходной датой. Важно: функция не изменяет исходную ячейку, а создаёт текстовую копию в новой. Это удобно, если нужно сохранить оригинальные данные для дальнейших вычислений.
Допустимые форматы для функции ТЕКСТ:
- 📅
"дд.мм.гг"→01.01.24 - 📅
"дд ммм гггг"→01 янв 2026 - 📅
"дддд, дд ммм"→Понедельник, 01 янв - 📅
"мм/дд/гг"→ американский формат01/01/24
Нюанс: Если в ячейке A1 уже применён нестандартный формат даты (например, через Формат ячеек → Все форматы), функция ТЕКСТ может вернуть неожиданный результат. В этом случае сначала сбросьте формат ячейки до Общий.
2. Изменение формата ячейки: когда достаточно "обмана" Excel
Если вам не нужно проводить дальнейшие вычисления с датой, можно принудительно изменить формат ячейки на текстовый. Этот метод не меняет внутреннее представление данных (дату как число), но заставляет Excel отображать её как строку.
Шаги:
- Выделите ячейку(и) с датой.
- Нажмите
Ctrl + 1(или правая кнопка →Формат ячеек). - Вкладка
Число→ выберитеТекстовый. - Нажмите
ОК.
Предупреждение: После этого вы не сможете использовать данные в формулах дат (например, При изменении формата на текстовый Excel не преобразует серийное число в строку. Вместо этого он просто отображает его как текст, но внутреннее значение остаётся числовым. Это видно, если после изменения формата применить функцию =ДАТАЗНАЧ() или =ДЕНЬНЕД()). Excel будет воспринимать значение как строку, а не как дату.
Что происходит внутри Excel?
=ТИП(A1) — она вернёт 1 (число), а не 2 (текст).
Этот метод полезен для визуального отображения, но не подходит, если нужно экспортировать данные в системы, где требуется именно текстовый тип.
3. Формула ДАТАЗНАЧ + ТЕКСТ: для нестандартных форматов
Если ваша дата хранится в нестандартном текстовом формате (например, `"01-янв-2026"` или `"2026/01/01"`), сначала преобразуйте её в серийное число с помощью =ДАТАЗНАЧ(), а затем примените ТЕКСТ:
=ТЕКСТ(ДАТАЗНАЧ(A1); "дд.мм.гггг")
Пример: Если в A1 записано `"01/01/2026"` (как текст), формула вернёт `"01.01.2026"` в нужном формате.
Обратите внимание: ДАТАЗНАЧ работает только с форматами, распознаваемыми Excel как даты. Например, она не сработает с `"1 января 2026"` или `"01.01"` (без года).
4. Power Query: преобразование дат в текст при импорте данных
Если вы работаете с большими наборами данных (например, импортируете из CSV или баз данных), удобнее использовать Power Query. Этот инструмент позволяет преобразовать даты в текст на этапе загрузки, не изменяя исходный файл.
Инструкция:
- Перейдите на вкладку
Данные→Получить данные→ выберите источник. - В открывшемся редакторе Power Query выделите столбец с датой.
- На вкладке
ПреобразованиевыберитеФормат → Дата/время → В текст. - Укажите нужный формат (например,
ДД.ММ.ГГГГ). - Нажмите
Закрыть и загрузить.
Преимущество: Этот метод не зависит от региональных настроек Excel, в отличие от функции ТЕКСТ, которая может вести себя по-разному в американской и европейской версиях программы.
Пример кода на языке M (для ручного редактирования в Power Query):
let
Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
ПреобразованныйТип = Table.TransformColumnTypes(Источник,{{"Дата", type text}}),
ДобавленНастраиваемыйСтолбец = Table.AddColumn(ПреобразованныйТип, "ДатаТекст", each Text.From([Дата], "ru-RU"), type text)
in
ДобавленНастраиваемыйСтолбец
5. VBA-макрос: автоматизация для больших файлов
Если вам нужно преобразовать сотни или тысячи дат, ручное применение формул займёт слишком много времени. В этом случае поможет макрос на VBA. Ниже пример кода, который преобразует все выделенные ячейки с датами в текстовый формат:
Sub ConvertDatesToText()
Dim cell As Range
For Each cell In Selection
If IsDate(cell.Value) Then
cell.NumberFormat = "@" ' Текстовый формат
cell.Value = Format(cell.Value, "dd.mm.yyyy")
End If
Next cell
End Sub
Как использовать:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Выделите ячейки с датами в Excel.
- Запустите макрос (
F5или черезМакросыв лентеРазработчик).
Важно: Макрос безвозвратно заменяет исходные данные на текстовые значения. Создайте резервную копию файла перед запуском!
Выделить только ячейки с датами|Сохранить файл в формате .xlsm (с поддержкой макросов)|Проверка на наличие скрытых символов в данных|Резервное копирование файла-->
Сравнение методов: какой выбрать?
Выбор способа зависит от задачи. В таблице ниже — сравнение всех методов по ключевым параметрам:
| Метод | Сохраняет исходную дату | Подходит для больших данных | Требует знания VBA | Работает в Excel Online |
|---|---|---|---|---|
Функция ТЕКСТ |
Да | Да | Нет | Да |
| Формат ячейки → Текстовый | Нет (визуально) | Да | Нет | Да |
ДАТАЗНАЧ + ТЕКСТ |
Да | Да | Нет | Да |
| Power Query | Да | Да (оптимально) | Нет | Частично |
| VBA-макрос | Нет | Да | Да | Нет |
Типичные ошибки и их решения
Даже опытные пользователи сталкиваются с проблемами при преобразовании дат. Разберём самые частые:
⚠️ Внимание: Если после применения функцииТЕКСТвы видите в ячейке число вместо даты (например,45287), проверьте формат исходной ячейки. Скорее всего, Excel воспринимает её не как дату, а как число. Используйте=ДАТАЗНАЧ()для предварительного преобразования.
Другие распространённые ошибки:
- 🚫 #ЗНАЧ! в функции
ТЕКСТ→ Проверьте, что в ячейке действительно дата (используйте=ЕЧИСЛО()или=ЕДАТА()для диагностики). - 🚫 Пропадают ведущие нули (например,
1.1.2026вместо01.01.2026) → Укажите формат с двумя символами для дня/месяца:"дд.мм.гггг". - 🚫 Дата отображается на английском (например,
Janвместоянв) → Измените языковые настройки Excel или используйте локализованный формат:"дд ммм гггг;@".
Если вы импортируете данные из внешних источников (например, 1С или SQL), даты могут приходить в виде строк с нестандартными разделителями (например, `"01-01-2026"`). В этом случае используйте комбинацию функций:
=ТЕКСТ(ДАТАЗНАЧ(ПОДСТАВИТЬ(A1; "-"; ".")); "дд.мм.гггг")
FAQ: Ответы на частые вопросы
Можно ли вернуть текстовую дату обратно в формат даты?
Да, но только если текст соответствует распознаваемому Excel формату. Используйте функцию =ДАТАЗНАЧ(). Например, для текста "01.01.2026" в ячейке A1:
=ДАТАЗНАЧ(A1)
Если формат нестандартный (например, "1 января 2026"), потребуется парсинг через Power Query или VBA.
Почему после копирования текстовой даты в Word она опять становится числом?
Excel копирует в буфер обмена значение ячейки, а не её отображаемый текст. Чтобы зафиксировать текстовый формат:
- Скопируйте ячейку.
- Вставьте в Word через
Специальная вставка → Текст. - Или предварительно преобразуйте дату в текст с помощью
=ТЕКСТ().
Как преобразовать время вместе с датой в текст?
Используйте расширенный формат в функции ТЕКСТ. Примеры:
=ТЕКСТ(A1; "дд.мм.гггг чч:мм")→01.01.2026 14:30=ТЕКСТ(A1; "дд.мм.гггг чч:мм:сс")→ с секундами=ТЕКСТ(A1; "[ч]:мм")→ продолжительность в часах (например,26:15для 26 часов 15 минут)
Работает ли функция ТЕКСТ в Google Sheets?
Да, но с другим названием — =TEXT(). Синтаксис идентичен:
=TEXT(A1; "dd.mm.yyyy")
Обратите внимание: в Google Sheets серийные числа дат начинаются с 1 января 1899 года (а не 1900, как в Excel), но на результат функции TEXT это не влияет.
Можно ли автоматически обновлять текстовые даты?
Нет. После преобразования в текст дата становится статической строкой и не обновляется. Если нужно фиксировать текущую дату при каждом открытии файла, используйте:
=ТЕКСТ(СЕГОДНЯ(); "дд.мм.гггг")
Но помните: это формула, а не текст. Для настоящей текстовой фиксации потребуется VBA-макрос с событием Workbook_Open.