Когда в ячейке Excel смешаны буквы и цифры (например, А123Б45 или Товар500гр), стандартные функции вроде РАЗДЕЛИТЬ() или ТЕКСТ.ПОСЛЕ() часто дают сбой. Проблема в том, что программа не распознаёт автоматически, где заканчивается текст и начинается число — или наоборот. В 90% случаев это происходит из-за отсутствия разделителя (пробела, запятой, тире) между символами разных типов. Решение зависит от структуры данных: для фиксированного формата подойдут формулы с ЛЕВСИМВ() и ПРАВСИМВ(), а для произвольных комбинаций потребуются регулярные выражения или VBA-скрипты.
Например, если в ячейке A1 содержится значение Пример123, и вам нужно вытащить 123 в одну колонку, а Пример — в другую, то универсального метода нет. Excel не умеет "угадывать" границы между текстом и числами без явных указателей. Однако есть обходные пути: от простых функций для однотипных данных до сложных макросов для хаотичных наборов. Далее разберём все варианты — от базовых до продвинутых, с учётом особенностей Excel 2016–2023 и Excel Online.
1. Разделение по фиксированной позиции (если структура данных одинаковая)
Самый надёжный способ — когда буквы и цифры в ячейке всегда занимают одинаковое количество символов. Например, артикулы вида AB-12345, где первые 2 символа — текст, а остальные 5 — числа. В этом случае используйте комбинацию функций ЛЕВСИМВ(), ПРАВСИМВ() и ПСТР():
- 🔹 Для извлечения текста:
=ЛЕВСИМВ(A1; 2)(берёт первые 2 символа слева). - 🔹 Для извлечения чисел:
=ПРАВСИМВ(A1; 5)(берёт последние 5 символов справа). - 🔹 Для извлечения средней части:
=ПСТР(A1; 3; 2)(начиная с 3-го символа, длиной 2 знака).
Если длина текстовой или числовой части варьируется, но есть разделитель (например, дефис - или пробел), используйте РАЗДЕЛИТЬ.ПО.РАЗДЕЛИТЕЛЯМ() (в новых версиях Excel) или ТЕКСТ.ДО()/ТЕКСТ.ПОСЛЕ():
=ТЕКСТ.ДО(A1; "-") // Извлечёт "AB" из "AB-12345"
=ТЕКСТ.ПОСЛЕ(A1; "-") // Извлечёт "12345" из "AB-12345"
⚠️ Внимание: ФункцииТЕКСТ.ДО()иТЕКСТ.ПОСЛЕ()появились только в Excel 2021 и Microsoft 365. В старых версиях используйтеЛЕВСИМВ()сНАЙТИ():=ЛЕВСИМВ(A1; НАЙТИ("-"; A1)-1) // Аналог ТЕКСТ.ДО2. Автоматическое разделение с помощью "Текст по столбцам"
Встроенный инструмент "Текст по столбцам" (меню
Данные → Текст по столбцам) справится, если между буквами и цифрами есть разделитель (пробел, запятая, точка с запятой и т.д.). Алгоритм:
- Выделите столбец с данными.
- Перейдите на вкладку
Данные→Текст по столбцам.- Выберите
С разделителями→Далее.- Укажите разделитель (например, пробел или запятую).
- Нажмите
Готово— данные разделятся на соседние столбцы.Если разделителя нет, инструмент бесполезен. Например, для значения
Товар100он не сработает — потребуются формулы или VBA.Убедитесь, что в столбце нет пустых ячеек|Проверьте, одинаковая ли структура у всех значений|Создайте резервную копию данных|Удалите лишние пробелы функцией
СЖПРОБЕЛЫ()-->
3. Разделение с помощью формул для произвольных данных
Когда буквы и цифры перемешаны без правила (например,
А1Б2В3), используйте комбинацию функций для извлечения только чисел или только текста:Извлечение чисел из текста
Формула для Excel 2019 и новее:
=ЗНАЧЕН(СЦЕПИТЬ(ЕСЛИОШИБКА(--ПСТР(A1;СТРОКА($1:$10);1);"")))Как работает:
ПСТР(A1;СТРОКА($1:$10);1)— проверяет каждый символ по очереди.--пытается преобразовать символ в число (если это цифра).ЕСЛИОШИБКАигнорирует ошибки (для букв).СЦЕПИТЬобъединяет все найденные цифры.ЗНАЧЕНпреобразует результат в число.Извлечение текста (букв) из строки
Формула для удаления всех цифр:
=СЦЕПИТЬ(ЕСЛИОШИБКА(ПСТР(A1;СТРОКА($1:$10);1);"";--ПСТР(A1;СТРОКА($1:$10);1)=""))⚠️ Внимание: Эти формулы работают как массивные — после ввода нажмитеCtrl+Shift+Enter(в старых версиях Excel) или простоEnter(в Excel 365). В противном случае результат будет неверным.Формулы|Инструмент "Текст по столбцам"|VBA-макросы|Регулярные выражения-->
4. Разделение с помощью Power Query (для больших данных)
Power Query (доступен в Excel 2016+ и Excel for Microsoft 365) позволяет разделять текст и числа даже в сложных комбинациях. Алгоритм:
- Выделите данные →
Данные → Получить данные → Из таблицы/диапазона.- В открывшемся редакторе Power Query выделите столбец →
Преобразовать → Разделить столбец → По количеству символов.- Укажите количество символов для текстовой части (например, 3) и выберите
Однократно, как можно левее.- Повторите для числовой части, указав отрицательное значение (например,
-5для последних 5 символов).- Нажмите
Закрыть и загрузить.Преимущество Power Query — обработка миллионов строк без замедления. Минус: требует навыков работы с инструментом.
Подробности о регулярных выражениях в Power Query
В Power Query можно использовать регулярные выражения для разделения. Например, формула
= Table.SplitColumn(#"Предыдущий шаг", "Column1", Splitter.SplitTextByRegex("(\d+)"), {"Текст", "Число"})разделит строку на текст и первую группу чисел (\d+). Это работает даже для хаотичных данных вродеА1Б22В333.5. VBA-макрос для сложных случаев
Если данные не поддаются формулам (например, чередуются буквы и цифры:
А10Б20В30), напишите макрос:Sub SplitTextAndNumbers()Dim rng As Range, cell As Range
Dim txt As String, num As String
Dim i As Integer, char As String
Set rng = Selection ' Выделите диапазон перед запуском
For Each cell In rng
txt = "" : num = ""
For i = 1 To Len(cell.Value)
char = Mid(cell.Value, i, 1)
If IsNumeric(char) Then
num = num & char
Else
txt = txt & char
End If
Next i
cell.Offset(0, 1).Value = txt ' Текст в соседнюю ячейку
cell.Offset(0, 2).Value = Val(num) ' Число ещё правее
Next cell
End Sub
Как использовать:
- Нажмите
Alt + F11, чтобы открыть редактор VBA.- Вставьте код в новый модуль (
Insert → Module).- Выделите диапазон с данными и запустите макрос (
F5).Результат: текст и числа будут записаны в соседние столбцы.
⚠️ Внимание: Макрос перезапишет данные в соседних ячейках. Перед запуском убедитесь, что справа от выделенного диапазона есть свободные столбцы.6. Ошибки и их решения
Распространённые проблемы при разделении текста и чисел:
Ошибка Причина Решение Формула возвращает #ЗНАЧ!Ячейка содержит ошибку или не текст Используйте ЕСЛИОШИБКА()или проверьте данные на ошибкиЧисла отображаются как текст (выровнены влево) Формат ячейки — "Текст" Выделите ячейки → Главная → Формат → ЧисловойМакрос не запускается Отключены макросы или нет прав Включите макросы в Файл → Параметры → Центр управления безопасностьюТЕКСТ.ПОСЛЕ()не работаетСтарая версия Excel Замените на ПРАВСИМВ()сНАЙТИ()Критическая ошибка: Если после разделения числа отображаются с экспонентой (например,
1.23E+05вместо123000), измените формат ячейки наЧисловойбез разделителя групп разрядов.=ТИП(B1)вернёт1для чисел и2для текста. Это поможет убедиться, что разделение прошло корректно.-->
7. Альтернативные методы (для опытных пользователей)
Если стандартные способы не подходят, попробуйте:
- 🔧 Регулярные выражения в VBA: Создайте функцию с поддержкой regex для гибкого разделения. Пример кода:
Function ExtractNumbers(rng As Range) As StringDim regex As Object
Set regex = CreateObject("VBScript.RegExp")
regex.Pattern = "\D"
regex.Global = True
ExtractNumbers = regex.Replace(rng.Value, "")
End Function
Вызов:
=ExtractNumbers(A1).- 📊 Google Таблицы: Используйте
=REGEXEXTRACT(A1; "\d+")для чисел и=REGEXEXTRACT(A1; "\D+")для текста.- 🔄 Python + Pandas: Для обработки больших файлов экспортируйте данные в CSV и используйте скрипт:
import pandas as pddf = pd.read_csv('data.csv')
df[['Text', 'Numbers']] = df['Column'].str.extract(r'([^\d]+)(\d+)')
df.to_csv('result.csv', index=False)
Эти методы требуют дополнительных навыков, но дают максимальную гибкость. Например, регулярные выражения позволяют разделять данные по шаблону (например, извлечь все цифры после первой буквы).
Часто задаваемые вопросы
Можно ли разделить буквы и цифры без разделителя?
Да, но только с помощью формул массива, VBA или Power Query. Стандартные функции Excel (вроде
РАЗДЕЛИТЬ.ПО.РАЗДЕЛИТЕЛЯМ) требуют явного разделителя (пробела, запятой и т.д.). Для данных без разделителей используйте методы из раздела 3 или раздела 5.Почему после разделения числа отображаются как текст?
Это происходит, если ячейка имеет формат
Текст. Чтобы исправить:
- Выделите ячейки с числами.
- На вкладке
Главнаявыберите форматЧисловойилиОбщий.- Если это не помогло, используйте функцию
ЗНАЧЕН():=ЗНАЧЕН(B1).Как разделить данные в формате "100г", "200мл" (цифры + единицы измерения)?
Используйте
ЛЕВСИМВ()сНАЙТИ()для динамического определения позиции разделителя:=ЛЕВСИМВ(A1; НАЙТИ(МИН(ЕСЛИОШИБКА(НАЙТИ({0;1;2;3;4;5;6;7;8;9};A1);""));A1)-1))Эта формула найдёт первую цифру и вернёт всё, что перед ней (например, для
100грезультат — пустая строка, а дляЯблоки5кг—Яблоки). Для извлечения чисел используйте:=ЗНАЧЕН(СЦЕПИТЬ(ЕСЛИОШИБКА(--ПСТР(A1;СТРОКА($1:$10);1);"")))Работает ли это в Excel Online?
Да, но с ограничениями:
- 🔹
Текст по столбцамдоступен.- 🔹 Формулы массива (вроде
СЦЕПИТЬ(ЕСЛИОШИБКА(...))) работают.- 🔹 VBA и Power Query недоступны.
- 🔹 Функции
ТЕКСТ.ДО()/ТЕКСТ.ПОСЛЕ()поддерживаются.Как автоматизировать разделение для новых данных?
Создайте таблицу Excel (
Ctrl + T), а затем:
- Добавьте столбцы для текста и чисел.
- Введите формулы разделения в первую строку новых столбцов.
- Excel автоматически продлит формулы на новые строки при добавлении данных.
Для полной автоматизации напишите VBA-макрос, который будет запускаться при открытии файла или изменении данных (событие
Worksheet_Change).