Когда в ячейке Excel хранится комбинированное значение типа 12345 от 15.05.2026 или Заказ №789/01.06.2026, стандартные функции сортировки и анализа становятся бесполезны. Проблема усугубляется, если дата записана как текст (например, после импорта из 1С или PDF), а номер слит с ней без разделителя. В 80% случаев пользователи пытаются решить задачу вручную — копируют данные в Word или Блокнот, теряя время на постобработку. На практике достаточно применить один из 7 методов, адаптированных под конкретный формат исходных данных.
Ключевой момент: перед разделением определите, как именно соединены номер и дата. Это может быть пробел, слеш (/), дефис (-), запятая или даже неразрывный пробел (код CHAR(160)). От формата зависит выбор инструмента: для структурированных данных с фиксированным разделителем подойдёт «Текст по столбцам», для хаотичных записей — формулы с REGEX или Power Query. Если дата хранится как текст (например, 01.01.2026 вместо серийного числа), её придётся дополнительно конвертировать функцией ДАТАЗНАЧ.
1. Разделение с помощью функции «Текст по столбцам» (для фиксированных разделителей)
Самый быстрый способ, если номер и дата разделены однотипным символом (пробел, запятая, тире). Метод работает даже для тысяч строк и не требует знания формул. Алгоритм:
- Выделите столбец с комбинированными данными.
- Перейдите на вкладку
Данные→Текст по столбцам. - Выберите
С разделителями→Далее. - Укажите нужный разделитель (например, пробел или
/) и снимите галочки с остальных. - Нажмите
Готово— данные разделятся по соседним столбцам.
⚠️ Внимание: Если в исходных данных используются несколько типов разделителей (например, Заказ 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 — дата в формате ДДММГГГГ), используйте функцию Текст по столбцам с параметром Фиксированная ширина:
- Выделите столбец →
Данные→Текст по столбцам→Фиксированная ширина. - В окне предварительного просмотра кликните мышью в месте разрыва между номером и датой (появится вертикальная линия).
- Нажмите
Далее→ выберите формат для второго столбца (Дата: ДМГ). - Завершите мастер.
Если дата записана в нестандартном формате (например, ГГММДД), после разделения примените формулу для её преобразования:
=ДАТА(ПРАВСИМВ(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 — оптимальный инструмент, если нужно обработать десятки тысяч строк с разными форматами. Алгоритм:
- Выделите данные →
Данные→Из таблицы/диапазона(в Excel 2016+). - В редакторе Power Query выберите столбец →
Разделить столбец→По разделителюилиПо количеству символов. - Для сложных форматов используйте
Извлечьс регулярными выражениями (например,[\d]{5}для 5-значного номера). - Преобразуйте столбец с датой в формат
Date(клик правой кнопкой →Изменить тип). - Нажмите
Закрыть и загрузить.
Пример кода 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
Чтобы запустить макрос:
- Нажмите
Alt+F11→Вставка→Модуль. - Вставьте код выше.
- Вернитесь в Excel, выделите диапазон с данными →
Вид→Макросы→ выберитеSplitNumberAndDate→Выполнить.
FAQ: Частые вопросы по разделению номеров и дат
Как разделить номер и дату, если они записаны в одной ячейке без разделителя (например, 1234501052026)?
Используйте формулы с фиксированной длиной:
- Для номера:
=ЛЕВСИМВ(A2;5)(если номер 5 знаков). - Для даты:
=ДАТА(ПРАВСИМВ(A2;4); ПСТР(A2;6;2); ПСТР(A2;8;2)).
Если длина номера переменная, применяйте Power Query с разделением по позициям.
Почему после разделения дата отображается как число (например, 45341)?
Это серийный номер даты в Excel. Чтобы исправить:
- Выделите столбец с датой.
- Нажмите
Ctrl+1→ выберите форматДата. - Если дата не распознаётся, используйте
=ДАТАЗНАЧ(B2).
Можно ли разделить номер и дату, если они записаны в разных форматах (например, 12345/01.05.2026 и Заказ 678 от 02-05-24)?
Да, но потребуется комбинация методов:
- Сначала замените все варианты разделителей на единый (например,
/и-на пробел) функциейПОДСТАВИТЬ. - Затем примените
Текст по столбцамс разделителем «пробел». - Для оставшихся нестандартных строк используйте формулы с
НАЙТИиПСТР.
Как разделить номер и дату в Google Таблицах?
Методы аналогичны Excel, но с поправками:
- Для
Текст по столбцам:Данные→Разбить текст на столбцы. - Функция
ДАТАЗНАЧзаменяется на=DATEVALUE(B2). - Регулярные выражения доступны через
=REGEXEXTRACT.
Почему функция ДАТАЗНАЧ возвращает ошибку #ЗНАЧ!?
Причины и решения:
- Неверный формат даты: Замените
/на.(для русской версии Excel). - Текст вместо даты: Проверьте ячейку на скрытые символы (например,
CHAR(160)). - Локальные настройки: В панели управления Windows измените формат короткой даты на
ДД.ММ.ГГГГ.