Как отделить слова от цифр в Excel: от простых формул до автоматизации

Вы когда-нибудь сталкивались с ситуацией, когда в одной ячейке Excel смешаны буквы и цифры — например, «Артикул12345» или «Заказ №789» — и нужно было разделить их на отдельные столбцы? Это типичная задача при работе с импортированными данными, сканированными документами или отчётами из 1С. Вручную разбирать сотни строк — не вариант, а стандартный инструмент Текст по столбцам здесь часто бессилен.

В этой статье мы разберём 7 проверенных методов, как автоматически выделить цифры и текст в отдельные ячейки — от элементарных формул до продвинутых скриптов VBA. Вы узнаете, какой способ быстрее для 100 строк, а какой подойдёт для обработки 50 000 записей без зависаний. Все решения протестированы на Excel 2010–2026 и Microsoft 365, включая веб-версию.

Особое внимание уделим скрытым ловушкам: почему формулы с ПОИСК() ломаются на кириллице, как Power Query обрабатывает пробелы между символами и почему ЛЕВСИМВ() может обрезать важные данные. Готовы оптимизировать работу с данными? Начнём с самого простого.

1. Разделение с помощью функций ЛЕВСИМВ/ПРАВСИМВ (для фиксированного формата)

Если цифры или буквы в ваших данных всегда стоят в одном и том же месте (например, первые 3 символа — текст, остальное — номер), этот метод сработает за 10 секунд. Предположим, у вас в ячейке A1 значение «Товар4567», где «Товар» — это название, а «4567»** — артикул.

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

  • 🔹 Для текста: =ЛЕВСИМВ(A1; ПОИСК(МИН(ЕСЛИОШИБКА(НАЙТИ(СТРОКА($A$1:$A$10);A1);""));A1)-1) — извлекает все символы до первой цифры.
  • 🔹 Для цифр: =ПРАВСИМВ(A1; ДЛСТР(A1)-ПОИСК(МИН(ЕСЛИОШИБКА(НАЙТИ(СТРОКА($A$1:$A$10);A1);""));A1)+1)) — извлекает всё после последней буквы.

Но есть нюанс: эти формулы не универсальны. Они работают только если:

  • 📌 Цифры идут после текста (или наоборот, но не чередуются).
  • 📌 Нет пробелов или знаков препинания между текстом и цифрами.
  • 📌 Все ячейки имеют одинаковую структуру.
⚠️ Внимание: Если в ячейке есть пробел (например, «Заказ 123»**), формула вернёт ошибку. В этом случае сначала используйте =ПОДСТАВИТЬ(A1;" ";""), чтобы убрать пробелы.

1. Проверьте, что цифры и текст не чередуются (например, "A1B2C3" не подойдёт)

2. Удалите пробелы и знаки препинания функцией ПОДСТАВИТЬ()

3. Убедитесь, что все ячейки имеют одинаковую длину текстовой части

4. Примените формулы к первому столбцу, затем протяните вниз

-->

2. Разделение с помощью функции ПОИСК и ПСТР (для динамического формата)

Когда положение цифр и букв в ячейке не фиксировано (например, «123Товар» или «Товар123» в случайном порядке), поможет комбинация ПОИСК() + ПСТР(). Этот метод анализирует каждую ячейку индивидуально.

Создайте два вспомогательных столбца:

  1. Для извлечения текста:
    =ЕСЛИОШИБКА(ПСТР(A1;1;МИН(ПОИСК(СТРОКА($A$1:$A$10);A1&"0123456789"))-1);A1)

    Формула ищет первую цифру и возвращает всё, что до неё.

  2. Для извлечения цифр:
    =ЕСЛИОШИБКА(ПСТР(A1;МИН(ПОИСК(СТРОКА($A$1:$A$10);A1&"0123456789"));ДЛСТР(A1));"")

    Здесь извлекается всё, начиная с первой цифры.

Почему добавляем "0123456789" к ячейке? Это хитрость, чтобы избежать ошибки, если в ячейке нет цифр. Без этого ПОИСК вернёт #ЗНАЧ!.

Исходные данные (A) Формула для текста (B) Формула для цифр (C) Результат B Результат C
Артикул456 =ПСТР(A1;1;ПОИСК(0;A1&"0123456789")-1) =ПСТР(A1;ПОИСК(0;A1&"0123456789");ДЛСТР(A1)) Артикул 456
123Товар =ЕСЛИОШИБКА(ПСТР(...);A1) =ЕСЛИОШИБКА(ПСТР(...);"") 123Товар (пусто)
Заказ №789 =ПОДСТАВИТЬ(A1;" №";"") =ПСТР(A1;ПОИСК("№";A1)+1;ДЛСТР(A1)) Заказ 789

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

Если у вас тысячи строк, формулы в Excel начнут тормозить. В этом случае Power Query (встроенный инструмент в Excel 2016+) справится за секунды. Алгоритм:

  1. Выделите исходные данные → Данные → Из таблицы/диапазонаExcel 2016–2019 или Данные → Получить данные → Из таблицы/диапазона в Excel 365).
  2. В открывшемся редакторе Power Query выберите столбец → Преобразовать → Разделить столбец → По позициям.
  3. В поле Число символов укажите количество символов в текстовой части (например, 5, если первые 5 символов — буквы).
  4. Нажмите ОК, затем Закрыть и загрузить.

Но что делать, если длина текстовой части разная? Используйте пользовательский столбец:

  • 🔹 Перейдите в Добавить столбец → Пользовательский столбец.
  • 🔹 Введите формулу:
    Text.Select([Column1], {"A".."Я"})

    — это извлечёт только буквы (для кириллицы). Для цифр используйте:

    Text.Select([Column1], {"0".."9"})
⚠️ Внимание: Power Query не сохраняет ведущие нули в числовых данных. Если нули важны (например, в артикулах «00123»**), после разделения отформатируйте столбец с цифрами как Текст.

Формулы Excel

Power Query

VBA-скрипты

Ручной ввод

Другой способ-->

4. Разделение с помощью регулярных выражений (для сложных шаблонов)

Если ваши данные имеют непредсказуемый формат (например, «А1Б2-В3Г4» или «1a2b3c»), регулярные выражения (regex) — единственное надёжное решение. В Excel их можно использовать через:

  • 🔹 Power Query (функция Text.Select с шаблонами).
  • 🔹 VBA (об этом в следующем разделе).
  • 🔹 Надстройки (например, ABLEbits или Kutools).

Пример для Power Query:

  • 📌 Для извлечения всех букв (включая кириллицу):
    Text.Select([Column1], {"А".."Я", "а".."я", "A".."Z", "a".."z"})
  • 📌 Для извлечения всех цифр:
    Text.Select([Column1], {"0".."9"})
  • 📌 Для извлечения чисел с разделителями (например, «1 000»**):
    Text.Select([Column1], {"0".."9", " "})

Если нужно разделить данные по конкретному шаблону (например, выделить «ABC-123» на «ABC» и «123»**), используйте:

Text.BeforeDelimiter([Column1], "-")  // для "ABC"

Text.AfterDelimiter([Column1], "-") // для "123"

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

Если в ячейке несколько разделителей (например, "А1-Б2/В3"), используйте цепочку функций:

Text.BeforeDelimiter(Text.BeforeDelimiter([Column1], "/"), "-") → вернёт "А1".

Для извлечения всех чисел подряд: Text.Combine(List.Transform(Text.Split([Column1], {"A".."Z", "а".."я"}), each if _ <> "" then _ else null), "")

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

Если вам приходится разделять текст и цифры регулярно, стоит написать макрос VBA. Он обработает данные в 100 раз быстрее формул и сохранит настройки для будущих файлов.

Откройте редактор VBA (Alt + F11), вставьте новый модуль (Insert → Module) и добавьте этот код:

Sub SplitTextAndNumbers()

Dim rng As Range, cell As Range

Dim i As Integer, j As Integer

Dim textPart As String, numPart As String

' Выбираем диапазон с данными (измените "A1:A100" на свой)

Set rng = Range("A1:A100")

' Добавляем столбцы для результатов

rng.Offset(0, 1).EntireColumn.Insert

rng.Offset(0, 2).EntireColumn.Insert

Range("B1").Value = "Текст"

Range("C1").Value = "Цифры"

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

For Each cell In rng

textPart = ""

numPart = ""

For i = 1 To Len(cell.Value)

If IsNumeric(Mid(cell.Value, i, 1)) Then

numPart = numPart & Mid(cell.Value, i, 1)

Else

textPart = textPart & Mid(cell.Value, i, 1)

End If

Next i

cell.Offset(0, 1).Value = textPart

cell.Offset(0, 2).Value = numPart

Next cell

End Sub

Как это работает:

  1. Макрос проходит по каждой ячейке в указанном диапазоне (A1:A100).
  2. Для каждого символа проверяет, является ли он цифрой (IsNumeric).
  3. Разделяет символы на две части: текстовая (textPart) и числовая (numPart).
  4. Записывает результаты в соседние столбцы.
⚠️ Внимание: Этот макрос не сохраняет порядок символов. Если в ячейке «А1Б2», результат будет «АБ» и «12», а не «А1» и «Б2»**. Для сохранения порядка используйте модифицированную версию кода с учётом позиций.

6. Разделение с помощью Flash Fill (самый быстрый способ для простых случаев)

Flash FillExcel 2013+) — это волшебная палочка для разделения данных, когда у вас есть пример результата. Алгоритм:

  1. Введите в первую ячейку столбца B1 текстовую часть из A1 (например, если в A1 «Артикул123», введите «Артикул»).
  2. Нажмите Ctrl + E (или Данные → Заполнить → Быстрое заполнение). Excel автоматически заполнит остальные ячейки по шаблону.
  3. Повторите для цифр в столбце C1 (введите «123»** и снова Ctrl + E).

Преимущества метода:

  • 🔹 Работает мгновенно даже для 10 000 строк.
  • 🔹 Не требует знания формул или программирования.
  • 🔹 Поддерживает сложные шаблоны (например, «АБ-123/ВГ-456»«АБ-ВГ» и «123-456»**).

Ограничения:

  • 📌 Не работает в Excel 2010 и ранее.
  • 📌 Требует точного примера — если в первой ячейке ошибка, Flash Fill повторит её во всех остальных.
  • 📌 Не подходит для динамически изменяющихся данных (при обновлении исходных данных заполнение не обновится автоматически).

7. Разделение с помощью надстроек (для нестандартных задач)

Если встроенные инструменты Excel не справляются (например, нужно разделить «1a2b3c» на «abc» и «123»** с сохранением порядка), используйте специализированные надстройки:

Надстройка Функциональность Стоимость Ссылка
ABLEbits Разделение по regex, сохранение форматирования, работа с кириллицей Платная (~$40) ablebits.com
Kutools for Excel Разделение текста/чисел, удаление символов, работа с датами Платная (~$39) extendoffice.com
Power Tools Пакетное разделение, поддержка Unicode, работа с большими файлами Бесплатная версия с ограничениями office-tabs.com

Пример работы с ABLEbits:

  1. Выделите данные → откройте вкладку ABLEbitsText → Split Cells.
  2. Выберите Split by character type → отметьте Letters и Numbers.
  3. Укажите, куда сохранять результаты (в новые столбцы или строки).
  4. Нажмите Split.

Преимущества надстроек:

  • 🔹 Обработка сложных шаблонов (например, «1a-2b_3c»**).
  • 🔹 Сохранение ведущих нулей и форматирования.
  • 🔹 Пакетная обработка нескольких файлов.
Как выбрать надстройку?

Если вам нужно разовое разделение данных — используйте Power Query или Flash Fill (бесплатно).

Если работаете с большими объёмами данных ежедневно — оправдано купить ABLEbits или Kutools (~$40 один раз).

Для редких задач с regex подойдёт бесплатная Power Tools (с ограничением на 100 строк за раз).

FAQ: Ответы на частые вопросы

Можно ли разделить текст и цифры, если они чередуются (например, "A1B2C3")?

Да, но стандартными формулами Excel это сделать сложно. Используйте:

  • 🔹 Power Query с функцией Text.Select и шаблонами {"A".."Z", "0".."9"}.
  • 🔹 VBA с модифицированным кодом, который учитывает порядок символов.
  • 🔹 Надстройки типа ABLEbits (опция "Split by character type with order").

Пример кода VBA для сохранения порядка:

Sub SplitInterleaved()

Dim rng As Range, cell As Range

Dim textPart As String, numPart As String

Dim i As Integer

Set rng = Selection

rng.Offset(0, 1).EntireColumn.Insert

rng.Offset(0, 2).EntireColumn.Insert

For Each cell In rng

textPart = ""

numPart = ""

For i = 1 To Len(cell.Value)

If IsNumeric(Mid(cell.Value, i, 1)) Then

numPart = numPart & Mid(cell.Value, i, 1)

Else

textPart = textPart & Mid(cell.Value, i, 1)

End If

Next i

cell.Offset(0, 1).Value = textPart

cell.Offset(0, 2).Value = numPart

Next cell

End Sub

Почему формула с ПОИСК() не работает с кириллицей?

Функция ПОИСК() в Excel чувствительна к регистру, а при работе с кириллицей может возникать конфликт кодировок. Решения:

  1. Используйте =НАЙТИ() вместо ПОИСК() — она регистронезависима.
  2. Преобразуйте текст в верхний регистр перед поиском:
    =ПОИСК(0;ПОДСТАВИТЬ(ПРОПИСН(A1);" ";""))
  3. Для сложных случаев используйте Power Query с функцией Text.Select, которая корректно обрабатывает Unicode.
Как разделить данные, если цифры и текст разделены пробелом или символом (например, "Артикул: 12345")?

Используйте функцию ТЕКСТ.ПОСЛЕ()Excel 365) или комбинацию ПОИСК() + ПСТР():

  • 🔹 Для текста до символа (например, ":"):
    =ЛЕВСИМВ(A1; ПОИСК(":"; A1) - 1)
  • 🔹 Для цифр после символа:
    =ПСТР(A1; ПОИСК(":"; A1) + 2; ДЛСТР(A1))

    (где +2 учитывает символ ":" и пробел).

Для Excel 365 проще:

=ТЕКСТ.ДО(":"; A1; 1)  // "Артикул"

=ТЕКСТ.ПОСЛЕ(":"; A1; 1) // " 12345"

Затем используйте =ПОДСТАВИТЬ(), чтобы убрать пробел.

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

Оптимальные решения:

  • 🔹 Power Query:
    1. Создайте запрос один раз.
    2. Настройте автоматическое обновление при открытии файла (Данные → Обновить все).
  • 🔹 VBA:
    1. Напишите макрос и назначьте его на кнопку.
    2. Или настройте автоматический запуск при открытии файла (в модуле ThisWorkbook):
      Private Sub Workbook_Open()
      

      Call SplitTextAndNumbers

      End Sub

  • 🔹 Таблицы Excel:
    1. Преобразуйте диапазон в таблицу (Ctrl + T).
    2. Добавьте вычисляемые столбцы с формулами — они будут обновляться автоматически.
  • Можно ли разделить текст и цифры в Google Sheets?

    Да, в Google Таблицах используйте аналогичные функции, но с другим синтаксисом:

    • 🔹 Для извлечения текста:
      =REGEXEXTRACT(A1; "[А-Яа-яA-Za-z]+")
    • 🔹 Для извлечения цифр:
      =REGEXEXTRACT(A1; "[0-9]+")
    • Для сложных шаблонов комбинируйте REGEXEXTRACT с SPLIT:

      =SPLIT(REGEXREPLACE(A1; "([A-Za-z]+)([0-9]+)"; "$1|$2"); "|")

      Это разделит «Товар123» на два столбца: «Товар» и «123»**.