Работа с датами в Microsoft Excel часто становится головной болью для пользователей. Вы когда-нибудь сталкивались с ситуацией, когда дата «спрятана» внутри текстовой строки, записана в нестандартном формате или вообще представлена как число? Например, в ячейке может быть текст «Заказ №45 от 15.03.2026 г.», а вам нужна только дата 15.03.2026 для дальнейших расчётов. Или хуже того — дата хранится как число 45342, которое Excel воспринимает как количество дней с 1900 года.
В этой статье мы разберём 7 проверенных способов, как «вытянуть» дату из любых данных в Excel: от простых функций до сложных формул и макросов. Вы узнаете, как работать с текстом, числами, нестандартными форматами и даже как автоматизировать процесс для тысяч строк. Без воды и ненужной теории — только практические решения с примерами и пояснениями.
Если вы никогда не работали с датами в Excel, не переживайте: мы начнём с базовых методов и постепенно перейдём к продвинутым. А если вы опытный пользователь, то найдёте здесь редкие приёмы, которые сэкономят часы ручной обработки данных. Например, знали ли вы, что с помощью функции ДАТАЗНАЧ можно преобразовать текст в дату даже если он записан как «31 декабря 2023 года»? Или что макрос на VBA способен извлечь даты из сотен ячеек за секунды?
Почему Excel не распознаёт дату автоматически?
Excel — умная программа, но далеко не всесведущая. Она распознаёт даты только в стандартных форматах, таких как:
- 📅 15.03.2026 или 15-03-2026
- 📅 15/03/2026 или 15/03/24
- 📅 15 марта 2026 или Mar-15-2026 (если настроен английский региональный формат)
Но стоит дате хоть немного отклониться от шаблона — и Excel воспринимает её как простой текст. Например:
- ❌ «Дата: 15.03.2026» — текст с префиксом
- ❌ «15032026» — без разделителей
- ❌ «15 марта 2026 г.» — с лишним символом «г.»
- ❌ 45342 — дата в числовом формате (количество дней с 01.01.1900)
Кроме того, Excel может автоматически преобразовывать даты в числа или наоборот, если региональные настройки компьютера отличаются от формата данных. Например, при настройках для США текст «03/15/2026» будет воспринят как 15 марта, а не 3 ноября.
⚠️ Внимание: Если вы импортируете данные из внешних источников (например, из 1С или PDF), даты часто приходят в текстовом формате. Перед обработкой проверьте тип данных в ячейке: выделите её и посмотрите на строку формул. Если там отображается «=15.03.2026» — это текст, а если просто 15.03.2026 — дата.
Способ 1: Извлечение даты из текста с помощью функций ЛЕВСИМВ, ПСТР и ПРАВСИМВ
Если дата встроена в текст (например, «Отчёт за 10.04.2026 год»), её можно «вырезать» с помощью текстовых функций. Предположим, что формат даты всегда одинаковый — ДД.ММ.ГГГГ.
Пример: Из строки «Счёт №123 от 25.05.2026 на сумму 1000 руб.» нужно извлечь 25.05.2026.
Формула будет такой:
=ПСТР(A1;ПОИСК("от ";A1)+3;10)
Разберём по шагам:
ПОИСК("от ";A1)— находит позицию слова «от » (с пробелом!). В нашем примере это 9-й символ.+3— сдвигаемся на 3 символа вправо (пропускаем «от »). Теперь позиция — 12.ПСТР(A1;12;10)— извлекаем 10 символов начиная с 12-й позиции (25.05.2026).
Если формат даты другой (например, ДД-ММ-ГГГГ или ГГГГ/ММ/ДД), подкорректируйте количество символов в ПСТР.
Найти уникальный маркер перед датой (например, "от ", "дата: ")
Определить длину даты в символах (обычно 8 или 10)
Использовать ПОИСК + ПСТР для точного извлечения
Преобразовать результат в дату с помощью ДАТАЗНАЧ-->
Проблема: Этот метод работает только если текст имеет строгий шаблон. Если дата может находиться в разных местах строки, потребуется более гибкое решение (см. Способ 4).
Способ 2: Преобразование числового формата в дату
Excel хранит даты как числа, где 1 соответствует 1 января 1900 года, а 45342 — 15 марта 2026 года. Если в ячейке отображается число типа 45342, но по логике там должна быть дата, выполните следующие шаги:
Метод 1: Изменить формат ячейки
- Выделите ячейку с числом.
- Нажмите
Ctrl+1(или правая кнопка → Формат ячеек). - Выберите категорию «Дата» и укажите нужный формат (например, 14.03.2001).
Метод 2: Использовать функцию ДАТА
Если число хранится как текст (например, «45342»), сначала преобразуйте его в число с помощью ЗНАЧЕН, а затем в дату:
=ДАТА(1900;1;1)+ЗНАЧЕН(A1)-2
Почему «-2»? Потому что Excel ошибочно считает 1900 год високосным (это исторический баг программы).
⚠️ Внимание: В Excel для Mac система дат начинается с 1904 года, а не 1900. Если формула возвращает неверную дату, попробуйте заменить1900на1904и убрать-2.
Таблица соответствия чисел и дат:
| Число в Excel | Дата | Формула для проверки |
|---|---|---|
| 44197 | 01.01.2021 | =ДАТА(2021;1;1) |
| 43831 | 01.01.2020 | =ДАТА(2020;1;1) |
| 45342 | 15.03.2026 | =ДАТА(2026;3;15) |
| 40909 | 01.01.2012 | =ДАТА(2012;1;1) |
Использую стандартные форматы ячеек
Пишу формулы для извлечения
Преобразую вручную
Не работал с датами-->
Способ 3: Функция ДАТАЗНАЧ для преобразования текста в дату
Функция ДАТАЗНАЧ (или DATEVALUE в английской версии) преобразует текстовый формат даты в числовой, который затем можно отформатировать как угодно.
Синтаксис:
=ДАТАЗНАЧ(текст)
Примеры:
- 📌 «15.03.2026» →
=ДАТАЗНАЧ("15.03.2026")→ 45342 (числовой формат) - 📌 «15-марта-2026» →
=ДАТАЗНАЧ("15-марта-2026")→ 45342 - 📌 «March 15, 2026» → работает только при английских региональных настройках!
Ограничения:
- ❌ Не работает с датами до 1900 года (вернёт ошибку
#ЗНАЧ!). - ❌ Не распознаёт нестандартные форматы вроде «15.03.24 г.» или «Дата: 15/03».
Как обойти ограничения?
Если ДАТАЗНАЧ не срабатывает, попробуйте:
- Заменить лишние символы с помощью
ПОДСТАВИТЬ:=ДАТАЗНАЧ(ПОДСТАВИТЬ(A1;" г.";"")) - Использовать комбинацию
ДАТА+ЛЕВСИМВ/ПРАВСИМВдля разбора даты по частям.
Способ 4: Извлечение даты с помощью регулярных выражений (Power Query)
Если даты в ваших данных записаны непостоянно (то в начале строки, то в конце, то с разными разделителями), на помощь приходит Power Query — инструмент для преобразования данных в Excel.
Пошаговая инструкция:
- Выделите диапазон с данными и перейдите на вкладку «Данные» → «Из таблицы/диапазона» (или «Получить данные» → «Из таблицы/диапазона»).
- В открывшемся редакторе Power Query выделите столбец с текстом.
- Перейдите на вкладку «Преобразовать» → «Извлечь» → «Текст после делителя». Укажите делитель (например, «от »).
- Затем снова «Преобразовать» → «Формат» → «Дата».
- Нажмите «Закрыть и загрузить».
Для сложных случаев (например, дата может быть в любом месте строки) используйте регулярные выражения:
- В Power Query добавьте пользовательский столбец с формулой:
= try Date.FromText(Text.Select([Column1], {"0".."9", "."})) otherwise nullЭта формула ищет в тексте все цифры и точки, а затем пытается преобразовать их в дату.
- Удалите строки с ошибками (
null) и загрузите данные обратно в Excel.
Пример работы регулярного выражения:
| Исходный текст | Извлечённая дата |
|---|---|
| Заказ от 10.05.2026 получен | 10.05.2026 |
| Дата оплаты: 15/03/24 | 15.03.2026 |
| Срок действия до 31.12.2026 г. | 31.12.2026 |
| Нет даты в тексте | (пусто) |
Способ 5: Разбор даты по компонентам (ДЕНЬ, МЕСЯЦ, ГОД)
Если дата записана в нестандартном формате (например, «15 марта 2026»), её можно разобрать на части и собрать заново с помощью функции ДАТА.
Пример: Из текста «15 марта 2026» извлечь день, месяц и год.
=ДАТА(
ПРАВСИМВ(A1;4); // Год (последние 4 символа)
ПОИСКПОЗ(
ЛЕВСИМВ(ПСТР(A1;ПОИСК(" ";A1)+1;3)); // Название месяца
{"янв";"фев";"мар";"апр";"мая";"июн";"июл";"авг";"сен";"окт";"ноя";"дек"}
);
ЛЕВСИМВ(A1;2) // День (первые 2 символа)
)
Пояснения:
- 🔹
ПРАВСИМВ(A1;4)— извлекает год (2026). - 🔹
ПСТР(A1;ПОИСК(" ";A1)+1;3)— извлекает название месяца («мар»). - 🔹
ПОИСКПОЗ— преобразует название месяца в его номер (март = 3). - 🔹
ЛЕВСИМВ(A1;2)— извлекает день (15).
Альтернатива для английских месяцев:
Если месяц записан по-английски (например, «March»), используйте массив:
{"Jan";"Feb";"Mar";"Apr";"May";"Jun";"Jul";"Aug";"Sep";"Oct";"Nov";"Dec"}
⚠️ Внимание: ФункцияПОИСКПОЗчувствительна к регистру! Если месяц записан как «Март», а в массиве указан «мар», формула вернёт ошибку. ИспользуйтеНАЙТИилиПОДСТАВИТЬдля нормализации текста.
Способ 6: Макрос VBA для автоматического извлечения дат
Если вам нужно обработать тысячи строк с датами в разных форматах, ручные методы не подойдут. На помощь приходит VBA (Visual Basic for Applications).
Макрос для извлечения дат из текста:
Sub ExtractDates()
Dim rng As Range
Dim cell As Range
Dim regex As Object
Dim matches As Object
Dim dateStr As String
' Создаём объект для работы с регулярными выражениями
Set regex = CreateObject("VBScript.RegExp")
regex.Pattern = "\d{1,2}[.-/]\d{1,2}[.-/]\d{2,4}" ' Ищем даты в формате ДД.ММ.ГГГГ, ДД-ММ-ГГ и т.д.
' Выделяем диапазон с данными (например, столбец A)
Set rng = Selection
' Обрабатываем каждую ячейку
For Each cell In rng
If regex.Test(cell.Value) Then
Set matches = regex.Execute(cell.Value)
dateStr = matches(0).Value
' Преобразуем текст в дату и записываем в соседнюю ячейку
cell.Offset(0, 1).Value = CDate(dateStr)
cell.Offset(0, 1).NumberFormat = "dd.mm.yyyy"
End If
Next cell
End Sub
Как использовать:
- Нажмите
Alt+F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Выделите диапазон с данными в Excel.
- Запустите макрос (
F5).
Что делает макрос:
- 🔍 Ищет в тексте шаблоны дат типа ДД.ММ.ГГГГ, ДД-ММ-ГГ, ДД/ММ/ГГГГ.
- 📅 Преобразует найденный текст в дату с помощью
CDate. - 📝 Записывает результат в соседнюю ячейку справа.
Модификации:
Если даты записаны в другом формате (например, «15 марта 2026»), измените шаблон регулярного выражения:
regex.Pattern = "\d{1,2}\s[а-яА-Я]{3,8}\s\d{4}"
Как ускорить работу макроса?
Отключите обновление экрана во время выполнения макроса, добавив в начало кода:
Application.ScreenUpdating = False
В конце макроса верните обновление:
Application.ScreenUpdating = True
Это ускорит обработку больших данных в 5-10 раз.
Способ 7: Использование Flash Fill (Быстрое заполнение)
Если у вас Excel 2013 или новее, вы можете воспользоваться функцией Flash Fill («Быстрое заполнение»), которая автоматически распознаёт шаблоны.
Пример: В столбце A у вас текст «Заказ от 10.05.2026», а в столбце B нужно извлечь только дату.
Шаги:
- В ячейку
B1введите первую дату вручную (10.05.2026). - Нажмите
Ctrl+E(или «Данные» → «Быстрое заполнение»). - Excel автоматически заполнит остальные ячейки столбца
Bпо шаблону.
Ограничения:
- ❌ Работает только если шаблон однородный (например, дата всегда после «от »).
- ❌ Может ошибаться с нестандартными форматами (например, «15 марта 2026»).
Совет: Если Flash Fill не сработал с первого раза, введите ещё 2-3 примера вручную, а затем запустите заполнение снова.
Частые ошибки и как их избежать
При работе с датами в Excel пользователи часто сталкиваются с типичными проблемами. Вот самые распространённые и способы их решения:
1. Дата отображается как число (например, 45342)
Причина: Ячейка имеет общий формат, а не формат «Дата».
Решение:
- 🔧 Измените формат ячейки на «Дата» (
Ctrl+1). - 🔧 Используйте формулу
=ДАТАЗНАЧ(ТЕКСТ(A1;"0"))для принудительного преобразования.
2. Функция ДАТАЗНАЧ возвращает ошибку #ЗНАЧ!
Причина: Текст не распознаётся как дата из-за лишних символов или неверного формата.
Решение:
- 🔧 Удалите лишние символы с помощью
ПОДСТАВИТЬ:=ДАТАЗНАЧ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;" г.";"");" ";"")) - 🔧 Проверьте региональные настройки Excel (меню «Файл» → «Параметры» → «Дополнительно» → «При переходе между книгами»).
3. Макрос не находит даты в тексте
Причина: Шаблон регулярного выражения не подходит под ваш формат даты.
Решение:
- 🔧 Измените шаблон в макросе. Например, для дат типа «15-мар-2026» используйте:
regex.Pattern = "\d{1,2}-[а-яА-Я]{3}-\d{4}" - 🔧 Проверьте кодировку текста (иногда вместо дефиса «-» используется другой символ).
4. После импорта из CSV даты сбились
Причина: При импорте Excel может неправильно интерпретировать разделители (точка vs запятая).
Решение:
- 🔧 Используйте Power Query для импорта данных с явным указанием формата даты.
- 🔧 Откройте CSV-файл в Блокноте, замените «;» на «,» (или наоборот) и сохраните перед импортом.
FAQ: Ответы на частые вопросы
Можно ли извлечь дату из текста, если её формат непостоянный (то через точку, то через дефис)?
Да, для этого подойдёт Power Query с регулярными выражениями или макрос на VBA. Например, в Power Query используйте формулу:
= try Date.FromText(Text.Select([Column1], {"0".."9", ".", "-", "/"})) otherwise null
Это позволит извлечь даты независимо от разделителя.
Почему после преобразования дата сдвигается на 4 года (например, 2026 становится 2020)?
Это происходит из-за конфликта систем дат в Excel. В Windows Excel по умолчанию использует систему 1900, а в Excel для Mac — 1904**. Чтобы исправить:
Как извлечь только год/месяц/день из даты?
Используйте функции:
- 📅 Год:
=ГОД(A1) - 📅 Месяц:
=МЕСЯЦ(A1) - 📅 День:
=ДЕНЬ(A1) - 📅 Номер недели:
=НОМНЕДЕЛИ(A1)
Если дата в текстовом формате, сначала преобразуйте её с помощью ДАТАЗНАЧ.
Можно ли извлечь дату из PDF или скана в Excel?
Да, но для этого потребуются дополнительные инструменты:
- Сначала извлеките текст из PDF с помощью Adobe Acrobat или онлайн-сервисов (например, Smallpdf).
- Импортируйте текст в Excel и используйте методы из этой статьи.
- Для сканов используйте программы распознавания текста (ABBYY FineReader).
Обратите внимание: распознанный текст может содержать ошибки (например, «15.03.2026» превратится в «15032026»). В таком случае используйте ПОДСТАВИТЬ для восстановления разделителей.
Как автоматически обновлять даты при изменении исходных данных?
Если вы используете формулы, они обновляются автоматически. Для макросов и Power Query настройте автоматическое обновление:
Worksheet_Change (обновится при изменении данных).