Как извлечь дату из текста, числа или ячейки в Excel: полное руководство

Работа с датами в 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 ноября.

⚠️ Внимание: Если вы импортируете данные из внешних источников (например, из или PDF), даты часто приходят в текстовом формате. Перед обработкой проверьте тип данных в ячейке: выделите её и посмотрите на строку формул. Если там отображается «=15.03.2026» — это текст, а если просто 15.03.2026 — дата.

Способ 1: Извлечение даты из текста с помощью функций ЛЕВСИМВ, ПСТР и ПРАВСИМВ

Если дата встроена в текст (например, «Отчёт за 10.04.2026 год»), её можно «вырезать» с помощью текстовых функций. Предположим, что формат даты всегда одинаковый — ДД.ММ.ГГГГ.

Пример: Из строки «Счёт №123 от 25.05.2026 на сумму 1000 руб.» нужно извлечь 25.05.2026.

Формула будет такой:

=ПСТР(A1;ПОИСК("от ";A1)+3;10)

Разберём по шагам:

  1. ПОИСК("от ";A1) — находит позицию слова «от » (с пробелом!). В нашем примере это 9-й символ.
  2. +3 — сдвигаемся на 3 символа вправо (пропускаем «от »). Теперь позиция — 12.
  3. ПСТР(A1;12;10) — извлекаем 10 символов начиная с 12-й позиции (25.05.2026).

Если формат даты другой (например, ДД-ММ-ГГГГ или ГГГГ/ММ/ДД), подкорректируйте количество символов в ПСТР.

Найти уникальный маркер перед датой (например, "от ", "дата: ")

Определить длину даты в символах (обычно 8 или 10)

Использовать ПОИСК + ПСТР для точного извлечения

Преобразовать результат в дату с помощью ДАТАЗНАЧ-->

Проблема: Этот метод работает только если текст имеет строгий шаблон. Если дата может находиться в разных местах строки, потребуется более гибкое решение (см. Способ 4).

Способ 2: Преобразование числового формата в дату

Excel хранит даты как числа, где 1 соответствует 1 января 1900 года, а 4534215 марта 2026 года. Если в ячейке отображается число типа 45342, но по логике там должна быть дата, выполните следующие шаги:

Метод 1: Изменить формат ячейки

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

Метод 2: Использовать функцию ДАТА

Если число хранится как текст (например, «45342»), сначала преобразуйте его в число с помощью ЗНАЧЕН, а затем в дату:

=ДАТА(1900;1;1)+ЗНАЧЕН(A1)-2

Почему «-2»? Потому что Excel ошибочно считает 1900 год високосным (это исторический баг программы).

⚠️ Внимание: В Excel для Mac система дат начинается с 1904 года, а не 1900. Если формула возвращает неверную дату, попробуйте заменить 1900 на 1904 и убрать -2.

Таблица соответствия чисел и дат:

Число в ExcelДатаФормула для проверки
4419701.01.2021=ДАТА(2021;1;1)
4383101.01.2020=ДАТА(2020;1;1)
4534215.03.2026=ДАТА(2026;3;15)
4090901.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».

Как обойти ограничения?

Если ДАТАЗНАЧ не срабатывает, попробуйте:

  1. Заменить лишние символы с помощью ПОДСТАВИТЬ:
    =ДАТАЗНАЧ(ПОДСТАВИТЬ(A1;" г.";""))
  2. Использовать комбинацию ДАТА + ЛЕВСИМВ/ПРАВСИМВ для разбора даты по частям.

Способ 4: Извлечение даты с помощью регулярных выражений (Power Query)

Если даты в ваших данных записаны непостоянно (то в начале строки, то в конце, то с разными разделителями), на помощь приходит Power Query — инструмент для преобразования данных в Excel.

Пошаговая инструкция:

  1. Выделите диапазон с данными и перейдите на вкладку «Данные»«Из таблицы/диапазона» (или «Получить данные»«Из таблицы/диапазона»).
  2. В открывшемся редакторе Power Query выделите столбец с текстом.
  3. Перейдите на вкладку «Преобразовать»«Извлечь»«Текст после делителя». Укажите делитель (например, «от »).
  4. Затем снова «Преобразовать»«Формат»«Дата».
  5. Нажмите «Закрыть и загрузить».

Для сложных случаев (например, дата может быть в любом месте строки) используйте регулярные выражения:

  1. В Power Query добавьте пользовательский столбец с формулой:
    = try Date.FromText(Text.Select([Column1], {"0".."9", "."})) otherwise null

    Эта формула ищет в тексте все цифры и точки, а затем пытается преобразовать их в дату.

  2. Удалите строки с ошибками (null) и загрузите данные обратно в Excel.

Пример работы регулярного выражения:

Исходный текстИзвлечённая дата
Заказ от 10.05.2026 получен10.05.2026
Дата оплаты: 15/03/2415.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

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

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Выделите диапазон с данными в Excel.
  4. Запустите макрос (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 нужно извлечь только дату.

Шаги:

  1. В ячейку B1 введите первую дату вручную (10.05.2026).
  2. Нажмите Ctrl+E (или «Данные»«Быстрое заполнение»).
  3. 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 для Mac1904**. Чтобы исправить:

  1. Перейдите в «Файл»«Параметры»«Дополнительно».
  2. В разделе «При переходе между книгами» снимите галочку «Использовать систему дат 1904».
Как извлечь только год/месяц/день из даты?

Используйте функции:

  • 📅 Год: =ГОД(A1)
  • 📅 Месяц: =МЕСЯЦ(A1)
  • 📅 День: =ДЕНЬ(A1)
  • 📅 Номер недели: =НОМНЕДЕЛИ(A1)

Если дата в текстовом формате, сначала преобразуйте её с помощью ДАТАЗНАЧ.

Можно ли извлечь дату из PDF или скана в Excel?

Да, но для этого потребуются дополнительные инструменты:

  1. Сначала извлеките текст из PDF с помощью Adobe Acrobat или онлайн-сервисов (например, Smallpdf).
  2. Импортируйте текст в Excel и используйте методы из этой статьи.
  3. Для сканов используйте программы распознавания текста (ABBYY FineReader).

Обратите внимание: распознанный текст может содержать ошибки (например, «15.03.2026» превратится в «15032026»). В таком случае используйте ПОДСТАВИТЬ для восстановления разделителей.

Как автоматически обновлять даты при изменении исходных данных?

Если вы используете формулы, они обновляются автоматически. Для макросов и Power Query настройте автоматическое обновление:

  • 🔄 Для Power Query: правая кнопка по таблице → «Свойства»«Обновлять при открытии файла».
  • 🔄 Для макросов: добавьте вызов макроса в событие Worksheet_Change (обновится при изменении данных).