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

Почему стандартные методы не всегда работают

Разделение чисел и текста в одной ячейке Excel — задача, с которой сталкивается каждый второй пользователь. Казалось бы, что может быть проще: выделить цифры и перенести их в отдельный столбец. Но на практике стандартные инструменты Microsoft Excel (например, Текст по столбцам) часто дают сбой, если данные имеют нестандартный формат: пробелы между символами, буквы внутри чисел или наоборот.

Проблема усугубляется, когда речь идет о больших массивах данных — например, логах с номером заказа и комментарием (A123Отправлено), артикулах с размером (Товар500гр) или телефонных номерах с приставками (Client+79123456789). В таких случаях ручная правка занимает часы, а автоматические методы требуют знания регулярных выражений или VBA.

Эта статья охватывает все актуальные способы разделения — от базовых функций до скриптов, с учетом нюансов разных версий Excel (2010–2023 и Microsoft 365). Вы узнаете, какой метод выбрать для вашего случая, как избежать ошибок при конвертации и что делать, если числа "слиплись" с текстом нестандартным образом.

📊 Какой у вас опыт работы с Excel?
Новичок (использую базовые функции)
Продвинутый пользователь (знаю формулы)
Эксперт (пишу макросы)
Никогда не работал

Метод 1: Текст по столбцам (для простых случаев)

Самый очевидный способ — инструмент Текст по столбцам, который находится на вкладке Данные. Он идеален, если числа и текст в ячейке разделены однотипным разделителем (запятая, точка с запятой, пробел). Например, для данных вида Яблоки 50 кг или Заказ#1234.

Алгоритм действий:

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

⚠️ Важно: Если в ячейке несколько пробелов подряд (например, Товар 100), Excel воспримет их как пустые столбцы. Чтобы избежать этого, отметьте галочку Считать последовательные разделители одним на шаге 2 мастера.

Убедиться, что разделитель ОДИНАКОВ во всех ячейках|Проверить отсутствие лишних пробелов|Скопировать исходные данные на отдельный лист (на случай ошибки)|Удалить объединённые ячейки в исходном столбце-->

Метод 2: Формулы для извлечения чисел (LEN, MID, FIND)

Когда разделителя нет или он нестабилен (например, Товар500гр или 123abc456), на помощь приходят формулы. Основной принцип: найти позицию первого числового символа и извлечь подстроку.

Пример формулы для извлечения чисел из начала строки (если текст идет после цифр, как в 123Товар):

=ЛЕВСИМВ(A1;НАЙТИ(МИН(ЕОШИБКА(НАЙТИ({0;1;2;3;4;5;6;7;8;9};A1&"0123456789"));A1)-1))

Для извлечения чисел из конца строки (например, Товар500):

=ПСТР(A1;МИН(ЕОШИБКА(НАЙТИ({0;1;2;3;4;5;6;7;8;9};A1&"0123456789")));ДЛСТР(A1))

⚠️ Внимание: Эти формулы работают только для чисел, записанных без десятичных разделителей (точка или запятая). Если в ячейке есть дробные числа (например, Товар3.14), используйте модифицированную версию с заменой точки на запятую:

=ПОДСТАВИТЬ(ПСТР(A1;МИН(ЕОШИБКА(НАЙТИ({0;1;2;3;4;5;6;7;8;9;"."};A1&"0123456789.")));ДЛСТР(A1));".";",")
Почему формулы не работают с отрицательными числами?

Формулы выше ищут первые цифры от 0 до 9, но не учитывают знак -. Чтобы извлечь отрицательные числа (например, Температура-5), добавьте символ минуса в массив поиска:

=ПСТР(A1;МИН(ЕОШИБКА(НАЙТИ({0;1;2;3;4;5;6;7;8;9;"-"};A1&"-0123456789")));ДЛСТР(A1))

Метод 3: Функция ПОИСК и ПОДСТАВИТЬ для сложных шаблонов

Если числа и текст перемешаны хаотично (например, A1B2C3 или 1a2b3c), потребуется многоступенчатая обработка. Здесь поможет комбинация функций ПОИСК, ПОДСТАВИТЬ и ЗАМЕНИТЬ.

Пример для извлечения всех цифр из строки (результат: 123 для A1B2C3):

=--ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;"A";"");"B";"");"C";"");"D";"");"E";"");"F";"");"G";"");"H";"");"I";"");"J";"")

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

=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;"0";"");"1";"");"2";"");"3";"");"4";"");"5";"");"6";"");"7";"");"8";"");"9";"")

Критическая деталь: Если в строке есть буквы в верхнем и нижнем регистре (например, aBc123), формулу нужно дублировать для всех вариантов (добавить замену "a", "b", "c" и "A", "B", "C").

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте новый модуль (Insert → Module).
  3. Скопируйте код:
    Function ExtractNumbers(rng As Range) As String
    

    Dim str As String, i As Integer, char As String

    str = rng.Value

    For i = 1 To Len(str)

    char = Mid(str, i, 1)

    If IsNumeric(char) Then ExtractNumbers = ExtractNumbers & char

    Next i

    End Function

  4. Теперь в Excel используйте =ExtractNumbers(A1).

-->

Метод 4: Power Query (для больших массивов данных)

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

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

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

    (извлечет все цифры).

  5. Нажмите Закрыть и загрузить.

⚠️ Внимание: Power Query не сохраняет формат ячеек. После загрузки данных обратно в Excel числа могут отобразиться как текст. Чтобы исправить это, выделите столбец → Главная → Формат → Числовой формат.

Метод Сложность Подходит для Ограничения
Текст по столбцам Простые разделители (пробел, запятая) Не работает без разделителя
Формулы (LEN, MID) ⭐⭐⭐ Числа в начале/конце строки Сложно для перемешанных символов
ПОИСК+ПОДСТАВИТЬ ⭐⭐⭐⭐ Хаотичное перемешивание текста и чисел Требует ручной настройки для каждого случая
Power Query ⭐⭐ Большие массивы данных Не сохраняет формат ячеек
VBA ⭐⭐⭐⭐⭐ Любые сложные шаблоны Требует знания программирования

Метод 5: Регулярные выражения (для экспертов)

Если вы работаете с Excel 365 или Excel 2021, у вас есть доступ к функциям ТЕКСТПОСЛЕ, ТЕКСТДО и РЕГВЫРАЖ (в бета-версии). С их помощью можно извлекать данные по регулярным выражениям — например, находить все числа независимо от их позиции.

Примеры:

  • 🔢 Извлечь первое число: =ЗНАЧЕН(ТЕКСТДО(ПОДСТАВИТЬ(A1;" ";";");";" & ТЕКСТПОСЛЕ(ПОДСТАВИТЬ(A1;" ";";");";")))
  • 🔢 Извлечь все числа (Excel 365): =РЕГВЫРАЖ.ИЗВЛЕЧЬ(A1; "\d+")
  • 📝 Извлечь весь текст (без чисел): =РЕГВЫРАЖ.ИЗВЛЕЧЬ(A1; "[^\d]+")

⚠️ Внимание: Функция РЕГВЫРАЖ на момент 2026 года доступна только в бета-версии Excel 365 для участников программы Insider. Чтобы ее включить, перейдите в Файл → Учетная запись → Программа предварительной оценки Excel → Бета-канал.

  • \d — любая цифра
  • \D — любой НЕ цифровой символ
  • + — один или более повторений
  • [A-Za-z] — любая латинская буква

-->

Метод 6: VBA для автоматизации (универсальное решение)

Если вам нужно обработать данные по сложному шаблону (например, извлечь числа из строк вида ID:1234, Status:OK, Value:50.99), VBA — единственный вариант. Ниже приведен скрипт, который разделяет числа и текст в выделенном диапазоне на два столбца:

Sub SplitNumbersAndText()

Dim rng As Range, cell As Range

Dim num As String, txt As String

Dim i As Integer, char As String

Set rng = Selection

Application.ScreenUpdating = False

For Each cell In rng

num = "" : txt = ""

For i = 1 To Len(cell.Value)

char = Mid(cell.Value, i, 1)

If IsNumeric(char) Or char = "." Or char = "," Or char = "-" Then

num = num & char

Else

txt = txt & char

End If

Next i

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

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

Next cell

Application.ScreenUpdating = True

MsgBox "Готово! Числа в столбце B, текст в столбце C.", vbInformation

End Sub

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

  1. Нажмите Alt + F11Insert → Module.
  2. Вставьте код выше.
  3. Вернитесь в Excel, выделите диапазон с данными.
  4. Нажмите Alt + F8, выберите SplitNumbersAndTextВыполнить.

⚠️ Внимание: Скрипт сохраняет десятичные разделители (точку и запятую) и знак минуса. Если в ваших данных используются другие символы (например, пробел как разделитель тысяч), добавьте их в строку If IsNumeric(char) Or char = "." Or char = "," Or char = "-" Or char = " ".

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

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

  • Числа преобразуются в даты: Excel автоматически конвертирует числа вида 12-05 в дату 12 мая. Чтобы избежать этого, предварительно отформатируйте столбец как Текстовый (Главная → Формат → Формат ячеек → Текстовый).
  • Потеря ведущих нулей: Если числа начинаются с нуля (например, 00123), Excel обрезает их. Решение: используйте текстовый формат или добавьте апостроф перед числом ('00123).
  • Формулы не обновляются: Если вы использовали формулы для извлечения данных, но при изменении исходных ячеек результат не меняется, проверьте, не включен ли режим ручного пересчета (Формулы → Вычисление → Автоматически).
  • Ошибка #ЗНАЧ! в формулах: Возникает, если в ячейке нет чисел. Добавьте обработку ошибок с помощью ЕСЛИОШИБКА:
    =ЕСЛИОШИБКА(Ваша_формула; "")

💡 Совет: Перед массовой обработкой данных всегда тестируйте метод на копии таблицы. Особенно это актуально для VBA и Power Query, где откат изменений затруднен.

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

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

Используйте комбинацию Текст по столбцам с указанием запятой как разделителя, а затем обработайте оставшиеся ячейки формулой:

=ЕСЛИ(ЕНД(НАЙТИ(",";A1)); ЛЕВСИМВ(A1;НАЙТИ(",";A1)-1); A1)

Эта формула проверяет наличие запятой. Если ее нет, возвращает исходное значение.

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

Это означает, что ширина столбца недостаточна для отображения числа. Растяните столбец или измените формат ячейки на Общий. Если проблема сохраняется, проверьте, не превышает ли число 11 знаков (максимум для отображения в Excel без научной нотации).

🔹 Можно ли автоматически разделить данные при импорте из CSV?

Да. При импорте CSV через Данные → Из текстового/CSV файла выберите столбец → Преобразовать → Разделить столбец. Укажите разделитель или используйте Дополнительные параметры для настройки шаблона.

🔹 Как отделить числа от текста в Google Таблицах?

В Google Sheets работают те же принципы, но с другими функциями:

  • Для извлечения чисел: =REGEXEXTRACT(A1; "\d+")
  • Для извлечения текста: =REGEXEXTRACT(A1; "\D+")
  • Аналог "Текста по столбцам": Данные → Разделить текст на столбцы.
🔹 Почему формулы из статьи не работают в моем Excel?

Возможные причины:

  • Вы используете неанглийскую версию Excel (замените LEN на ДЛСТР, MID на ПСТР и т.д.).
  • В ячейках есть непечатаемые символы (пробелы, табуляции). Используйте =ЧИСТ(A1) для их удаления.
  • Числа хранятся как текст. Преобразуйте их в числа с помощью =ЗНАЧЕН(A1).