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

Когда в ячейке Excel хранится комбинированное значение типа 12345 от 15.05.2026 или Заказ №789/01.06.2026, стандартные функции сортировки и анализа становятся бесполезны. Проблема усугубляется, если дата записана как текст (например, после импорта из или PDF), а номер слит с ней без разделителя. В 80% случаев пользователи пытаются решить задачу вручную — копируют данные в Word или Блокнот, теряя время на постобработку. На практике достаточно применить один из 7 методов, адаптированных под конкретный формат исходных данных.

Ключевой момент: перед разделением определите, как именно соединены номер и дата. Это может быть пробел, слеш (/), дефис (-), запятая или даже неразрывный пробел (код CHAR(160)). От формата зависит выбор инструмента: для структурированных данных с фиксированным разделителем подойдёт «Текст по столбцам», для хаотичных записей — формулы с REGEX или Power Query. Если дата хранится как текст (например, 01.01.2026 вместо серийного числа), её придётся дополнительно конвертировать функцией ДАТАЗНАЧ.

1. Разделение с помощью функции «Текст по столбцам» (для фиксированных разделителей)

Самый быстрый способ, если номер и дата разделены однотипным символом (пробел, запятая, тире). Метод работает даже для тысяч строк и не требует знания формул. Алгоритм:

  1. Выделите столбец с комбинированными данными.
  2. Перейдите на вкладку ДанныеТекст по столбцам.
  3. Выберите С разделителямиДалее.
  4. Укажите нужный разделитель (например, пробел или /) и снимите галочки с остальных.
  5. Нажмите Готово — данные разделятся по соседним столбцам.

⚠️ Внимание: Если в исходных данных используются несколько типов разделителей (например, Заказ 123 от 01/05 и 02/05), метод даст сбой. В этом случае применяйте формулы (раздел 3) или Power Query (раздел 5).

Исходные данные Разделитель Результат (Столбец A) Результат (Столбец B)
12345 01.05.2026 Пробел 12345 01.05.2026
Заказ№789/02.06.2026 / Заказ№789 02.06.2026
Инв-567,15.07.2026 , Инв-567 15.07.2026

2. Разделение по фиксированной длине (если номер и дата слиты без разделителя)

Когда номер и дата записаны подряд (например, 1234501052026, где 12345 — номер, а 01052026 — дата в формате ДДММГГГГ), используйте функцию Текст по столбцам с параметром Фиксированная ширина:

  1. Выделите столбец → ДанныеТекст по столбцамФиксированная ширина.
  2. В окне предварительного просмотра кликните мышью в месте разрыва между номером и датой (появится вертикальная линия).
  3. Нажмите Далее → выберите формат для второго столбца (Дата: ДМГ).
  4. Завершите мастер.

Если дата записана в нестандартном формате (например, ГГММДД), после разделения примените формулу для её преобразования:

=ДАТА(ПРАВСИМВ(A2;4); ПСТР(A2;5;2); ЛЕВСИМВ(A2;2))
Как разделить данные, если номер и дата имеют переменную длину?

Если номер может состоять из 3–7 цифр, а дата всегда 8 символов (ДДММГГГГ), используйте формулу:

=ЛЕВСИМВ(A2; ДЛСТР(A2)-8)  // для номера

=ПРАВСИМВ(A2;8) // для даты

Затем преобразуйте дату функцией ДАТАЗНАЧ или ДАТА (см. раздел 4).

3. Формулы для сложных форматов (с текстом, разными разделителями)

Когда номер и дата перемежаны с текстом (например, Счёт №123 от 15 мая 2026 г.), используйте комбинацию функций НАЙТИ, ПСТР и ПОИСК.Universal-решение для извлечения номера:

=ЕСЛИОШИБКА(

--ПСТР(A2; НАЙТИ("№";A2)+1; НАЙТИ(" ";A2; НАЙТИ("№";A2)) - НАЙТИ("№";A2)-1);

""

)

Для извлечения даты (если она в формате ДД ММММ ГГГГ):

=ДАТАЗНАЧ(

ПСТР(A2; ПОИСК("20";A2)-6; 10)

)

⚠️ Внимание: Если в ячейке несколько дат (например, Договор №456 от 01.05.2026 на 10.06.2026), формулы выше извлекут только первую. Для таких случаев используйте Power Query (раздел 5) или VBA (раздел 7).

  • 🔢 Для номеров с префиксами: Если номер начинается с букв (например, INV-123), модифицируйте формулу: =ПСТР(A2; НАЙТИ("-";A2)+1; 10).
  • 📅 Для дат в скобках: Если дата заключена в скобки (например, Заявка 789 (05.06.2026)), используйте: =ПСТР(A2; НАЙТИ("(";A2)+1; 10).
  • Для нестандартных разделителей: Если разделитель — непечатаемый символ (например, табуляция), замените его функцией =ПОДСТАВИТЬ(A2; СИМВОЛ(9); " ") перед разделением.

4. Преобразование текстовой даты в формат даты Excel

После разделения дата часто остаётся текстом (например, 01.05.2026 вместо серийного числа 45419). Чтобы использовать её в формулах или фильтрах, конвертируйте с помощью:

  • 📊 ДАТАЗНАЧ: =ДАТАЗНАЧ(B2) — работает для форматов ДД.ММ.ГГГГ или ДД-ММ-ГГГГ.
  • 🔄 ДАТА: =ДАТА(ПРАВСИМВ(B2;4); ПСТР(B2;4;2); ЛЕВСИМВ(B2;2)) — для нестандартных форматов.
  • ⚙️ Формат ячеек: Выделите столбец → Формат ячеекДата (если Excel распознал текст как дату).

Критическая ошибка: Если после применения ДАТАЗНАЧ появляется #ЗНАЧ!, проверьте регион Windows. В русской версии Excel разделителем даты должен быть . (точка), а не /. Исправьте формат исходных данных функцией =ПОДСТАВИТЬ(B2; "/"; ".").

Функцию "Текст по столбцам"|Формулы (ЛЕВСИМВ, ПРАВСИМВ и др.)|Power Query|VBA-макросы|Другой способ-->

5. Разделение с помощью Power Query (для больших объёмов данных)

Power Query — оптимальный инструмент, если нужно обработать десятки тысяч строк с разными форматами. Алгоритм:

  1. Выделите данные → ДанныеИз таблицы/диапазонаExcel 2016+).
  2. В редакторе Power Query выберите столбец → Разделить столбецПо разделителю или По количеству символов.
  3. Для сложных форматов используйте Извлечь с регулярными выражениями (например, [\d]{5} для 5-значного номера).
  4. Преобразуйте столбец с датой в формат Date (клик правой кнопкой → Изменить тип).
  5. Нажмите Закрыть и загрузить.

Пример кода M для извлечения номера и даты из строки Заказ №12345 от 01.05.2026:

let

Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],

ИзвлечьНомер = Table.AddColumn(Источник, "Номер", each Text.BetweenDelimiters([Столбец1], "№", " от")),

ИзвлечьДату = Table.AddColumn(ИзвлечьНомер, "Дата", each Date.From(Text.AfterDelimiter([Столбец1], "от "))),

УдалитьИсходный = Table.RemoveColumns(ИзвлечьДату,{"Столбец1"})

in

УдалитьИсходный

🔹 Убедитесь, что исходные данные в формате таблицы (Ctrl+T)|🔹 Проверьте отсутствие пустых строк в начале/конце диапазона|🔹 Замените нестандартные разделители (например, CHAR(160)) на пробелы|🔹 Сохраните резервную копию файла-->

6. Регулярные выражения (для хаотичных форматов)

Если данные не имеют чёткой структуры (например, 12345, дата: 01 мая или Номер 789/Дата 05-06-24), используйте регулярные выражения через VBA или Power Query. В Excel 365 доступны нативные функции ТЕКСТПОСЛЕ, ТЕКСТДО и РЕГВЫРАЖ (для бета-тестеров).

Пример VBA-кода для извлечения номера и даты:

Function ExtractNumber(rng As Range) As String

Dim regex As Object

Set regex = CreateObject("VBScript.RegExp")

regex.Pattern = "\d+" ' Ищет первую последовательность цифр

ExtractNumber = regex.Execute(rng.Value)(0)

End Function

Function ExtractDate(rng As Range) As Date

Dim regex As Object

Set regex = CreateObject("VBScript.RegExp")

regex.Pattern = "\d{2}\.\d{2}\.\d{4}" ' Формат ДД.ММ.ГГГГ

If regex.Test(rng.Value) Then

ExtractDate = CDate(regex.Execute(rng.Value)(0))

Else

ExtractDate = "01.01.1900" ' Значение по умолчанию

End If

End Function

⚠️ Внимание: Регулярные выражения чувствительны к формату даты. Если в данных встречаются варианты 01.05.2026, 01-05-2026 и 01/05/2026, используйте универсальный шаблон: \d{1,2}[-\./]\d{1,2}[-\./]\d{4}.

7. Автоматизация через VBA (для повторяющихся задач)

Если разделение номеров и дат — рутинная операция, запишите VBA-макрос. Пример кода для разделения данных в выделенном диапазоне (предполагается формат Номер ДД.ММ.ГГГГ):

Sub SplitNumberAndDate()

Dim rng As Range, cell As Range

Dim lastRow As Long, i As Long

Dim numCol As Integer, dateCol As Integer

' Задаём столбцы для номера и даты

numCol = 2 ' Столбец B

dateCol = 3 ' Столбец C

' Определяем последний ряд выделенного диапазона

Set rng = Selection

lastRow = rng.Rows.Count

' Обрабатываем каждую ячейку

For i = 1 To lastRow

Dim parts() As String

parts = Split(rng.Cells(i, 1).Value, " ")

' Записываем номер (первая часть)

rng.Cells(i, numCol).Value = parts(0)

' Записываем дату (вторая часть) и конвертируем в формат даты

If UBound(parts) >= 1 Then

rng.Cells(i, dateCol).Value = CDate(parts(1))

rng.Cells(i, dateCol).NumberFormat = "dd.mm.yyyy"

End If

Next i

End Sub

Чтобы запустить макрос:

  1. Нажмите Alt+F11ВставкаМодуль.
  2. Вставьте код выше.
  3. Вернитесь в Excel, выделите диапазон с данными → ВидМакросы → выберите SplitNumberAndDateВыполнить.

FAQ: Частые вопросы по разделению номеров и дат

Как разделить номер и дату, если они записаны в одной ячейке без разделителя (например, 1234501052026)?

Используйте формулы с фиксированной длиной:

  • Для номера: =ЛЕВСИМВ(A2;5) (если номер 5 знаков).
  • Для даты: =ДАТА(ПРАВСИМВ(A2;4); ПСТР(A2;6;2); ПСТР(A2;8;2)).

Если длина номера переменная, применяйте Power Query с разделением по позициям.

Почему после разделения дата отображается как число (например, 45341)?

Это серийный номер даты в Excel. Чтобы исправить:

  1. Выделите столбец с датой.
  2. Нажмите Ctrl+1 → выберите формат Дата.
  3. Если дата не распознаётся, используйте =ДАТАЗНАЧ(B2).
Можно ли разделить номер и дату, если они записаны в разных форматах (например, 12345/01.05.2026 и Заказ 678 от 02-05-24)?

Да, но потребуется комбинация методов:

  1. Сначала замените все варианты разделителей на единый (например, / и - на пробел) функцией ПОДСТАВИТЬ.
  2. Затем примените Текст по столбцам с разделителем «пробел».
  3. Для оставшихся нестандартных строк используйте формулы с НАЙТИ и ПСТР.
Как разделить номер и дату в Google Таблицах?

Методы аналогичны Excel, но с поправками:

  • Для Текст по столбцам: ДанныеРазбить текст на столбцы.
  • Функция ДАТАЗНАЧ заменяется на =DATEVALUE(B2).
  • Регулярные выражения доступны через =REGEXEXTRACT.
Почему функция ДАТАЗНАЧ возвращает ошибку #ЗНАЧ!?

Причины и решения:

  • Неверный формат даты: Замените / на . (для русской версии Excel).
  • Текст вместо даты: Проверьте ячейку на скрытые символы (например, CHAR(160)).
  • Локальные настройки: В панели управления Windows измените формат короткой даты на ДД.ММ.ГГГГ.