Разделение чисел и текста в Excel: перенос в разные столбцы за 5 минут

Почему стандартные инструменты Excel не всегда справляются с разделением данных

Вы когда-нибудь сталкивались с ситуацией, когда в одной ячейке Excel смешаны текст и цифры — например, Товар123, Артикул 4567 или 20кг яблок? Вручную разносить такие данные по разным столбцам — утомительно, особенно если строк тысячи. К сожалению, стандартный инструмент Текст по столбцам часто даёт сбой: он не распознаёт переменное количество символов, игнорирует пробелы как разделители или портит форматирование чисел (превращая 00123 в 123).

В этой статье мы разберём 5 надёжных способов отделить цифры от текста в Excel — от простых формул до автоматизации через Power Query и VBA. Вы узнаете, как сохранить ведущие нули, обработать данные с нестандартными разделителями (тире, скобки, запятые) и избежать ошибок при работе с большими массивами. Все методы протестированы на Excel 2010–2023 и Office 365, включая веб-версию.

Прежде чем переходить к инструкциям, ответьте на вопрос: какой тип данных вам нужно разделить?

📊 Какой формат данных вы чаще всего разделяете в Excel?
Текст+цифры без разделителей (напр. Товар123)
Текст и цифры с пробелами (напр. Артикул 4567)
Цифры в начале/конце (напр. 20кг яблок)
Смешанные символы (напр. A-12/B-34)
Другой вариант

Способ 1: Формулы для разделения текста и чисел (без макросов)

Если вам нужно однократно разделить данные и не хочется возиться с настройками, формулы — самый быстрый вариант. Они работают даже в защищённых файлах и не требуют прав на редактирование макросов. Ниже приведены универсальные формулы для разных сценариев.

1. Цифры в конце текста (например, Товар123)

Используйте комбинацию функций ЛЕВСИМВ, ПСТР и ДЛСТР:

  • 🔹 Для извлечения текста:
    =ЛЕВСИМВ(A1;НАЙТИ(МИН(ЕСЛИОШИБКА(НАЙТИ(СТРОКА(0;9);A1);""));A1)-1)
  • 🔹 Для извлечения чисел:
    =ПСТР(A1;НАЙТИ(МИН(ЕСЛИОШИБКА(НАЙТИ(СТРОКА(0;9);A1);""));A1);99)

2. Цифры в начале текста (например, 123Товар)

Здесь поможет функция ПРАВСИМВ:

  • 🔹 Для извлечения чисел:
    =ЛЕВСИМВ(A1;МАКС(ЕСЛИОШИБКА(НАЙТИ(СТРОКА(0;9);A1)&{0;1;2;3;4;5;6;7;8;9};0)))
  • 🔹 Для извлечения текста:
    =ПРАВСИМВ(A1;ДЛСТР(A1)-МАКС(ЕСЛИОШИБКА(НАЙТИ(СТРОКА(0;9);A1)&{0;1;2;3;4;5;6;7;8;9};0))))

3. Текст и цифры с разделителем (пробел, тире, запятая)

Для данных вида Артикул-4567 или 20 кг используйте:

  • 🔹 Разделение по пробелу:
    =ЛЕВСИМВ(A1;НАЙТИ(" ";A1)-1)  // текст
    

    =ПРАВСИМВ(A1;ДЛСТР(A1)-НАЙТИ(" ";A1)) // цифры

  • 🔹 Разделение по тире/запятой: замените " " на "-" или ",".

Исправлены опечатки в ячейках (лишние пробелы, символы)

Формат ячеек с результатом — "Общий" или "Текст"

Для чисел с ведущими нулями выбран формат "Текст"

Формулы скопированы без лишних пробелов-->

Способ 2: Инструмент "Текст по столбцам" — когда он работает

Встроенный инструмент Текст по столбцам (Данные → Текст по столбцам) подходит для структурированных данных с чёткими разделителями. Например, если у вас в ячейке Яблоки, 5 кг, 200 руб, его можно разделить по запятым. Однако для смешанных данных (например, Товар123) он бесполезен.

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

  1. Выделите столбец с данными.
  2. Перейдите в Данные → Текст по столбцам.
  3. Выберите Формат данных:
    • 📌 С разделителями — если есть запятые, точки с запятой, пробелы.
    • 📌 Фиксированная ширина — если текст и цифры всегда на одних и тех же позициях.
  • На шаге 2 укажите разделитель (например, пробел или запятую).
  • На шаге 3 выберите формат для нового столбца (например, "Текст" для сохранения ведущих нулей).
  • Что делать, если "Текст по столбцам" не разделяет данные правильно?

    Проблема часто в невидимых символах (табуляция, неразрывный пробел). Попробуйте:

    1. Замените все пробелы на стандартные: =ПОДСТАВИТЬ(A1;СИМВОЛ(160);" ").

    2. Используйте Power Query (см. Способ 4).

    3. Примените формулы из Способа 1 для "грязных" данных.

    Исходные данные Разделитель Результат (столбец 1) Результат (столбец 2) Применяемый метод
    Артикул 4567 Пробел Артикул 4567 Текст по столбцам
    Товар123 Нет Товар 123 Формулы (Способ 1)
    20кг_яблок Нижнее подчёркивание 20кг яблок Текст по столбцам
    A-12/B-34 Сложный A-12 B-34 Power Query
    ⚠️ Внимание: Инструмент Текст по столбцам удаляет ведущие нули в числовых значениях. Чтобы сохранить их, перед разделением отформатируйте столбец как "Текст" или используйте формулы.

    Способ 3: Функция ПОИСКПОЗ для сложных шаблонов

    Если ваши данные следуют определённому шаблону (например, Р-12345, где Р- — префикс, а 12345 — номер), функция ПОИСКПОЗ поможет извлечь цифры независимо от их позиции. Этот метод полезен для обработки серийных номеров, артикулов или кодов.

    Пример 1: Извлечение чисел после префикса

    Допустим, у вас в ячейке A1 значение PRD-00456, и нужно вытащить 00456:

    =ПРАВСИМВ(A1;ДЛСТР(A1)-ПОИСКПОЗ(1;--(КОДСИМВ(ЛЕВСИМВ(A1;СТРОКА(1;10)))>47);0))

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

    Пример 2: Извлечение текста до первого числа

    Для обратной задачи (получить PRD- из PRD-00456):

    =ЛЕВСИМВ(A1;ПОИСКПОЗ(1;--(КОДСИМВ(ЛЕВСИМВ(A1;СТРОКА(1;10)))>47);0)-1)

    Эти формулы работают даже если количество цифр или символов префикса варьируется (например, PRD-456 vs PRODUCT-0012345).

    Способ 4: Power Query — автоматическое разделение для больших файлов

    Если у вас тысячи строк и нужно разделить данные регулярно, Power Query (доступен в Excel 2016+ и Office 365) сэкономит часы работы. Этот инструмент позволяет создавать многоступенчатые правила обработки, которые обновляются при изменении исходных данных.

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

    1. Выделите ваш диапазон и перейдите в Данные → Получить данные → Из таблицы/диапазона.
    2. В открывшемся редакторе Power Query выберите столбец с данными.
    3. Перейдите на вкладку Преобразовать и выберите:
      • 🔧 Разделить столбец → По разделителю — если есть чёткий разделитель (пробел, запятая).
      • 🔧 Разделить столбец → По количеству символов — если цифры всегда на одних и тех же позициях.
      • 🔧 Извлечь → Текст до/после разделителя — для гибкого извлечения.
  • Для сложных шаблонов (например, A12B34) используйте настраиваемый столбец с формулой на языке M:
    = Text.Select([Column1],{"0".."9"})  // извлекает только цифры
    

    = Text.Remove([Column1],{"0".."9"}) // извлекает только текст

  • Нажмите Закрыть и загрузить, чтобы вернуть данные в Excel.
  • Power Query сохраняет все шаги преобразования, поэтому при обновлении исходных данных достаточно кликнуть Обновить все на вкладке Данные.

    ⚠️ Внимание: При работе с Power Query не изменяйте исходный диапазон после загрузки данных. Добавление/удаление строк может сломать связь. Вместо этого обновите запрос через Данные → Обновить все.

    Способ 5: VBA-макрос для автоматизации (для опытных пользователей)

    Если вам нужно разделять данные ежедневно или обрабатывать файлы по шаблону, макрос на VBA ускорит процесс в 10 раз. Ниже приведён универсальный код, который разделяет текст и цифры в выделенном диапазоне, сохраняя ведущие нули.

    Код макроса:

    Sub SplitTextAndNumbers()
    

    Dim rng As Range, cell As Range

    Dim i As Integer, j As Integer, k As Integer

    Dim str As String, num As String

    Set rng = Selection

    Application.ScreenUpdating = False

    For Each cell In rng

    str = "" : num = ""

    For i = 1 To Len(cell.Value)

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

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

    Else

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

    End If

    Next i

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

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

    Next cell

    Application.ScreenUpdating = True

    MsgBox "Готово! Текст и цифры разделены.", vbInformation

    End Sub

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

    1. Нажмите Alt + F11, чтобы открыть редактор VBA.
    2. Вставьте код в новый модуль (Insert → Module).
    3. Выделите столбец с данными в Excel.
    4. Запустите макрос (F5 или через Разработчик → Макросы).
    5. Макрос создаст два новых столбца справа от выделенного: в первом будет текст, во втором — цифры. Для обработки данных с разделителями (например, Товар - 123) модифицируйте строку с условием If IsNumeric(...).

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

      Замените блок проверки на:

      If Mid(cell.Value, i, 1) = " " Then
      

      ' Разделитель найден - остаток строки в num

      num = Mid(cell.Value, i + 1)

      Exit For

      Else

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

      End If

      Это разделит Товар 123 на Товар и 123.

      Типичные ошибки и как их избежать

      Даже опытные пользователи Excel сталкиваются с проблемами при разделении текста и чисел. Вот 5 самых распространённых ошибок и способы их решения:

      • 🚫 Потеря ведущих нулей: всегда форматируйте столбец с результатом как "Текст" до применения формул или инструмента Текст по столбцам.
      • 🚫 Ошибка #ЗНАЧ! в формулах: проверьте, нет ли в данных пустых ячеек или символов, которые формула не ожидает (например, буквы О вместо цифры 0).
      • 🚫 Неправильное разделение по пробелам: используйте =ПОДСТАВИТЬ(A1;СИМВОЛ(160);" "), чтобы заменить неразрывные пробелы на обычные.
      • 🚫 Макрос не работает: убедитесь, что в настройках Excel включена поддержка макросов (Файл → Параметры → Центр управления безопасностью → Параметры центра... → Включить все макросы).
      • 🚫 Power Query не обновляет данные: проверьте, что исходный диапазон не был переименован или удалён. Обновите связь через Данные → Связи.
      Ошибка Причина Решение
      Цифры превращаются в даты (например, 1-121 дек) Excel автоматически преобразует числа в формат даты. Отформатируйте столбец как "Текст" перед разделением.
      Формулы возвращают #ЧИСЛО! В данных есть непечатаемые символы или ошибки. Очистите данные функцией =ЧИСТ(A1).
      Текст и цифры не разделяются Нет чёткого разделителя или шаблона. Используйте Power Query с настраиваемыми правилами.
      Макрос выдаёт ошибку Run-time error '13' В данных есть пустые ячейки или несовместимые типы. Добавьте проверку If cell.Value <> "" Then в начало цикла.

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

      Можно ли разделить текст и цифры в Google Таблицах?

      Да, в Google Sheets работают аналогичные методы:

      • 🔹 Формулы: используйте =REGEXEXTRACT(A1; "[^\d]+") для текста и =REGEXEXTRACT(A1; "\d+") для чисел.
      • 🔹 Инструмент Данные → Разделить текст на столбцы (аналог Текст по столбцам в Excel).
      • 🔹 Apps Script (аналог VBA) для автоматизации.

    Отличие от Excel: в Google Sheets нет Power Query, но есть функция SPLIT для разделителей.

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

    Для таких случаев подойдёт:

    1. Формулы: используйте =СЦЕПИТЬ(ЕСЛИ(ЕЧИСЛО(ПСТР(A1;СТРОКА(1:10);1));"";ПСТР(A1;СТРОКА(1:10);1))) для текста и аналогичную для чисел с условием ЕЧИСЛО.
    2. Power Query: примените настраиваемый столбец с кодом на M:
      = Text.Select([Column1],{"A".."Z"})  // текст
      

      = Text.Select([Column1],{"0".."9"}) // цифры

    Почему после разделения цифры отображаются как ######?

    Это означает, что ширина столбца недостаточна для отображения числа. Растяните столбец или измените формат ячейки на "Текст". Также проверьте, не превышает ли число 15 знаков (ограничение Excel для точного отображения).

    Как сохранить ведущие нули при разделение через "Текст по столбцам"?

    Перед использованием инструмента:

    1. Выделите исходный столбец.
    2. Нажмите Ctrl + 1 (или правая кнопка → Формат ячеек).
    3. Выберите формат "Текст".
    4. Примените Текст по столбцам и на последнем шаге снова выберите формат "Текст" для нового столбца.
    Можно ли разделить данные в защищённом файле Excel?

    Да, но с ограничениями:

    • 🔹 Формулы будут работать, если ячейки не заблокированы.
    • 🔹 Текст по столбцам требует прав на редактирование структуры.
    • 🔹 Макросы не запустятся, если файл открыт в режиме "Только чтение".
    • 🔹 Power Query работает, если разрешены внешние связи.

    Если файл защищён паролем, попросите владельца временно снять защиту или скопируйте данные в новый файл.