Порой при работе в Excel встречаются данные, в которых умышленно или неумышленно сцеплены текст и цифры. Например, определенное число из нескольких цифр, и текст перед ним. Стоит задача отделить это число от текста. Или это некий набор буквенно-числовых артикулов, в которых нужно отделить буквы от цифр.

При этом ни функций, ни процедур, которые выполняли бы задуманное, в Excel по умолчанию нет. Можно ли? Ответ — да, а далее — пошаговое руководство.

Прежде, чем приступать к непосредственному решению задачи, рекомендуется сначала найти числа в каждой ячейке и аналогично проверить, что эти же ячейки содержат буквы, обычно кириллицы или латиницы. Это позволит сократить требуемые вычислительные ресурсы, если строк в данных много.

В этой статье я рассматриваю существующие способы разделения текста и цифр, как с помощью стандартных функций Excel, так и с помощью сторонних решений, в числе которых моя надстройка для Excel.

Примечание: речь в ней о разделении текста и цифр внутри ячейки. Если вы хотите выделить цифры в отдельную ячейку — читайте эту статью: извлечь цифры из ячейки в Excel.

Отделить цифры от текста — формулы Excel

Начнем с штатных возможностей Excel. Наиболее несложно будет решить с их помощью задачи, когда количество текстовых и цифровых промежутков в строке определено и не меняется от строки к строке. Наиболее популярные варианты:

  • буквы перед цифрами (x100, FX5200, MI6)
  • цифра/цифры перед буквой/буквами (2021г, 3D, 4K, 4,2Ghz)
  • число-текст-число (3к2, 22стр3, 1ЕКХ23)

Отделить число справа от текста

Если мы знаем, что ячейка начинается с букв, а заканчивается цифрами, нужно найти позицию первой цифры в ячейке. По ссылке читайте подробности, а вот сама формула:

{=ПОИСКПОЗ(ЛОЖЬ;ЕОШ(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1)-1);0)}
Это формула массива!
Как и все похожие (с фигурными скобками) далее, она вводится:
- без фигурных скобок, 
- сочетанием CTRL+Shift+Enter (вместо просто Enter). 

Далее уже дело техники — получить фрагменты до этой позиции и начиная с нее, в этом помогут функции ЛЕВСИМВ и ПСТР. Допустим, если позиция будет вычислена в ячейке A2, а исходный текст в ячейке A1, то формулы для первой и второй части будут, соответственно:

=ЛЕВСИМВ(A1;A2-1)
=ПСТР(A1;A2;1000)

Если хочется вывести весь результат через разделитель сразу в одну ячейку, нужно составить формулу из трех вышеуказанных:

{=ЛЕВСИМВ(A1;ПОИСКПОЗ(ЛОЖЬ;ЕОШ(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1)-1);0)-1)
&" "&
ПСТР(A1;ПОИСКПОЗ(ЛОЖЬ;ЕОШ(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1)-1);0);9999)}

Данная формула имеет разделителем пробел (в строке посередине), если хотите использовать другой разделитель, просто замените его на свой.

Отделить цифры, стоящие перед текстом

Если же заранее известно, что текст ячейки начинается с цифр и продолжается текстовыми символами, нужно получить позицию первого нечислового символа. Это можно сделать с помощью аналогичной формулы массива, единственная разница лишь в том, что функция ПОИСКПОЗ ищет ИСТИНА, а не ЛОЖЬ:

{=ПОИСКПОЗ(ИСТИНА;ЕОШ(ПСТР(A1;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A1)));1)-1);0)}

Далее порядок действий аналогичен первому примеру.

Регулярные выражения

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

К сожалению, на текущий момент они не поставляются в Excel из коробки, но доступны по умолчанию в гугл таблицах.

В Гугл таблицах

Формула Гугл таблиц, которая разделит текст и цифры, довольно незамысловата:

=TRIM(REGEXREPLACE(A1,"(\d+|\D+)","$1 "))

Подробнее о регулярных выражениях и том, как они работают, можно почитать в моей статье на этом сайте: Регулярные выражения в Excel (ссылка).

В Excel с надстройкой !SEMTools

Тем не менее, всем пользователям моей надстройки функции регулярных выражений доступны бесплатно безо всяких ограничений — нужно просто подключить надстройку к Excel. Важно понимать, что функции будут работать корректно только на компьютерах, где она установлена.

Разделить текст и числа через пробел с помощью регулярных выражений в Excel с !SEMTools

Разбить текст и цифры с !SEMTools в 2 клика

Для тех, кто ценит время, я разработал процедуру, которая разбивает текст и цифры прямо внутри ячейки, или выводит результат такой процедуры в соседний столбец — это зависит от глобальной настройки вывода результатов.

Все, что вам нужно сделать, это:

  1. просто выделить диапазон или ячейку,
  2. вызвать процедуру,
  3. указать разделитель
  4. и нажать ОК.
Разделяем текст и цифры внутри ячеек процедурой
Разбивка текста и цифр процедурой надстройки

Хотите так же быстро выполнять данную процедуру? Попробуйте тестовую версию надстройки !SEMTools:

скачать !SEMTools