Работа с неструктурированными данными в Microsoft Excel — одна из самых распространённых задач, с которыми сталкиваются аналитики, бухгалтеры и менеджеры. Часто в одной ячейке смешаны текст и цифры: например, артикул "Товар123", код "АБВ-456" или адрес "Дом5кв17". Разделение таких данных на отдельные колонки экономит часы ручной работы и позволяет дальше использовать числа для расчётов, а текст — для фильтрации.
В этой статье мы разберём 7 проверенных способов, как в Excel отделить буквы от цифр — от элементарных функций до автоматизации через VBA. Вы узнаете, какой метод выбрать в зависимости от формата данных, научитесь обрабатывать тысячи строк за секунды и избежите типичных ошибок при разделении. А в конце — бонус: готовые шаблоны формул для копирования!
1. Разделение с помощью функции "Текст по столбцам"
Самый простой способ разделить текст и цифры — использовать встроенный инструмент Текст по столбцам. Он подходит, если данные имеют фиксированный разделитель (например, дефис, пробел или запятую) или когда цифры всегда стоят в начале/конце строки.
Как это работает:
- 📌 Выделите столбец с данными (например,
A1:A100). - 🔧 Перейдите на вкладку
Данные→Текст по столбцам. - 📋 Выберите
С разделителями(если есть символ-разделитель) илиФиксированная ширина(если цифры и текст идут подряд без пробелов). - 🔍 На шаге 2 укажите разделитель (например, пробел или тире) или вручную расставьте линии раздела для фиксированной ширины.
- 📊 Нажмите
Готово— данные разделятся по новым столбцам.
Ограничение метода: если цифры и буквы идут слитно (например, Товар123), инструмент не сработает — потребуются формулы или VBA.
2. Формулы для извлечения чисел из текста
Когда цифры и буквы слиты в одно слово (например, Документ45 или 2023Отчет), на помощь приходят текстовые функции. Вот 3 ключевые формулы для извлечения чисел:
| Задача | Формула | Пример |
|---|---|---|
| Извлечь все цифры из строки | =СУММПРОИЗВ(--НЕОШИБКА(--ПСТР(A1;СТРОКА($1:$99);1)+0))*10^(СТРОКА($1:$99)-1) |
Для A1="Товар123" вернёт 123 |
| Извлечь первое число в строке | =ЛЕВСИМВ(ПОДСТАВИТЬ(A1;ЛЕВСИМВ(A1;ПОИСК(ЦЕЛОЕ(ЛЕВСИМВ(A1;1)));A1;);"");ПОИСК(ЦЕЛОЕ(ЛЕВСИМВ(A1;1)));A1;)-1) |
Для A1="5яблок" вернёт 5 |
| Извлечь числа после последней буквы | =ПРАВСИМВ(A1;ДЛСТР(A1)-МАКС(ЕСЛИОШИБКА(НАЙТИ(СТРОКА($0:$9);A1);0))) |
Для A1="Приказ2023" вернёт 2023 |
Важно: формулы массива (как первая в таблице) нужно вводить через Ctrl+Shift+Enter в старых версиях Excel (до 2019 года). В новых версиях они работают автоматически.
3. Извлечение текста без цифр
Если вам нужны только буквы, а цифры — лишние, используйте комбинацию функций ПОДСТАВИТЬ и ПЕЧСИМВ. Принцип простой: заменить все цифры на пустоту, оставив только символы.
Универсальная формула:
=ПЕЧСИМВ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;"0";"");"1";"");"2";"");"3";"");"4";"");"5";"");"6";"");"7";"");"8";"");"9";"")
Для удобства можно создать пользовательскую функцию (см. раздел про VBA), но если данных мало, хватит и этой "монструозной" формулы. Альтернатива — использовать РУБЛЬ.ТЕКСТ с заменой:
=ПОДСТАВИТЬ(ПОДСТАВИТЬ(...;РУБЛЬ.ТЕКСТ(0);"");РУБЛЬ.ТЕКСТ(1);"")
⚠️ Внимание: если в тексте есть символы, похожие на цифры (например, римские числаIVили буквыO, похожие на ноль), формула их не удалит. Для таких случаев потребуется ручная проверка или регулярные выражения (доступны только через VBA).
4. Разделение с помощью Power Query
Power Query — мощный инструмент для трансформации данных, доступный в Excel 2016 и новее. Он позволяет разделять текст и цифры даже в сложных комбинациях без формул.
Пошаговая инструкция:
- Выделите исходные данные и нажмите
Данные → Из таблицы/диапазона(если данные не в таблице, Excel предложит создать её). - В открывшемся редакторе Power Query выберите столбец с данными →
Преобразовать → Разделить столбец → По разделителю. - Укажите
Неалфавитные символы(для извлечения чисел) илиАлфавитные символы(для извлечения текста). - Нажмите
Закрыть и загрузить— данные разделятся в новые столбцы.
Power Query удобен для одноразовой обработки больших массивов (десятки тысяч строк). Минус: результаты не обновляются автоматически при изменении исходных данных (в отличие от формул).
Выделить исходный диапазон|Преобразовать в таблицу (Ctrl+T)|Открыть Power Query (Данные → Из таблицы)|Указать тип разделителя|Загрузить результаты в новый лист-->
5. Автоматизация через VBA (макросы)
Если вам регулярно приходится разделять текст и цифры, стоит создать пользовательскую функцию на VBA. Она сработает быстрее формул и справится с любыми комбинациями символов.
Пример кода для извлечения чисел из текста:
Function ExtractNumbers(rng As Range) As String
Dim str As String, i As Integer, result As String
str = rng.Value
For i = 1 To Len(str)
If IsNumeric(Mid(str, i, 1)) Then result = result & Mid(str, i, 1)
Next i
ExtractNumbers = result
End Function
Как использовать:
- 🔧 Нажмите
Alt+F11, чтобы открыть редактор VBA. - 📄 Вставьте код в модуль (
Insert → Module). - 🔙 Вернитесь в Excel и введите в ячейке
=ExtractNumbers(A1).
Для извлечения текста замените условие IsNumeric на Not IsNumeric. VBA обработает данные в 10-100 раз быстрее, чем формулы, если строк больше 10 000.
⚠️ Внимание: перед запуском макросов убедитесь, что в настройках Excel разрешено выполнение скриптов (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Настройки макросов → Включить все макросы). В корпоративных сетях этот параметр может быть заблокирован администратором.
6. Разделение с учетом регулярных выражений (Regex)
Регулярные выражения (Regex) — самый гибкий способ работы с текстом, но в Excel они доступны только через VBA. С их помощью можно разделять данные по сложным шаблонам, например:
- 📌 Извлечь все числа, даже если они разделены буквами (
А1Б2В3 → 123). - 📌 Разделить строку типа
12.05.2023Заказ45на дату и номер. - 📌 Удалить все символы, кроме цифр и латинских букв.
Пример функции для извлечения чисел с помощью Regex:
Function ExtractNumbersRegex(rng As Range) As String
Dim regex As Object, str As String
Set regex = CreateObject("VBScript.RegExp")
str = rng.Value
With regex
.Pattern = "\d+" ' Шаблон: одна или более цифр
.Global = True
End With
If regex.Test(str) Then
ExtractNumbersRegex = regex.Execute(str)(0)
Else
ExtractNumbersRegex = ""
End If
End Function
Преимущество Regex: один и тот же код можно адаптировать под любые форматы данных, меняя только шаблон (.Pattern). Например, для извлечения текста до первой цифры используйте шаблон "^[^\d]+".
Примеры шаблонов Regex для Excel
Извлечь все цифры: \d+
Извлечь текст до первой цифры: ^[^\d]+
Удалить все нецифровые символы: [^\d] (с заменой на "")
Найти дату в формате ДД.ММ.ГГГГ: \d{2}\.\d{2}\.\d{4}
7. Обработка специальных случаев
Иногда данные имеют нестандартный формат, и стандартные методы не работают. Рассмотрим 3 сложных сценария и их решения:
| Сценарий | Проблема | Решение |
|---|---|---|
| Дробные числа в тексте | Формулы извлекают только целую часть (Товар3.14 → 314) |
Использовать ПОДСТАВИТЬ для замены точки на запятую перед извлечением: =ПОДСТАВИТЬ(A1;",";"."), затем применить формулу для чисел. |
| Римские цифры | Функции не распознают IV, IX как числа |
Создать таблицу соответствия римских и арабских цифр и использовать ВПР. |
| Цифры в юникоде | Символы типа ①, ② (кружки с числами) не извлекаются |
Применить ПЕЧСИМВ с заменой юникод-символов на обычные цифры через ПОДСТАВИТЬ. |
Для дробных чисел также подойдёт Power Query с настройкой локали (чтобы правильно распознавались разделители). А если в данных встречаются непечатаемые символы (например, табуляции или переносы строк), предварительно очистите их функцией =ЧИСТ(A1).
FAQ: Ответы на частые вопросы
Можно ли разделить текст и цифры без формул?
Да, используйте инструмент Текст по столбцам (раздел 1) или Power Query (раздел 4). Эти методы не требуют знания функций, но работают только при наличии разделителя или фиксированной структуры данных.
Почему формула возвращает ошибку #ЗНАЧ?
Ошибка возникает, если:
- В ячейке нет чисел (для формул извлечения цифр).
- Используется неподходящий разделитель десятичных знаков (замените точку на запятую или наоборот).
- Формула массива введена без
Ctrl+Shift+Enter(в старых версиях Excel).
Как разделить данные, если цифры и буквы чередуются (например, А1Б2В3)?
Используйте VBA с регулярными выражениями (раздел 6) или создайте цепочку из функций ПОИСК и ПСТР для каждого символа. Альтернатива — разделить данные посимвольно в отдельные столбцы, а затем объединить цифры и буквы отдельно.
Можно ли автоматизировать разделение для новых данных?
Да, для этого:
- Создайте динамическую таблицу (
Ctrl+T) с исходными данными. - Добавьте столбцы с формулами для разделения.
- Используйте
Power Queryс подключением к таблице — при обновлении данных результаты пересчитаются автоматически.
Как разделить текст и цифры в Google Sheets?
В Google Таблицах работают те же принципы, но:
- Для "Текста по столбцам" используйте
Данные → Разделить текст на столбцы. - Формулы аналогичны, но вместо
СУММПРОИЗВиспользуйтеARRAYFORMULA. - Regex доступны через функцию
=REGEXEXTRACT(например,=REGEXEXTRACT(A1; "\d+")для извлечения чисел).