Как разделить текст и цифры в Excel
Возможности !SEMTools
↑ Навигация по задачам в Excel и возможностям надстройки !SEMTools ↑

Разделить текст и цифры в ячейке Excel, когда буквы идут перед числом (FX5200, x100), можно двумя формулами: =ЛЕВСИМВ(A2;МИН(НАЙТИ({0;1;2;3;4;5;6;7;8;9};A2&"0123456789"))-1) вернёт текст, а =ПСТР(A2;МИН(НАЙТИ({0;1;2;3;4;5;6;7;8;9};A2&"0123456789"));1000) — число. МИН(НАЙТИ(…)) находит позицию первой цифры. Если порядок текста и цифр заранее неизвестен, поможет регулярное выражение =СЖПРОБЕЛЫ(REGEXREPLACE(A2;"(\d+|\D+)";"$1 ")), а разбить текст и цифры прямо в ячейках, без формул, можно в 2 клика процедурой !SEMTools.

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

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

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

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

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

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

Если ячейка начинается с букв, а заканчивается цифрами, нужно найти позицию первой цифры. Проще всего — функцией НАЙТИ, которая ищет сразу все 10 цифр, и МИН, которая выбирает самую левую. Дописанные «0123456789» страхуют от ошибки, если какой-то цифры в строке нет. Формула работает в любой версии Excel без Ctrl+Shift+Enter:

Разделить буквы и цифры
B2=МИН(НАЙТИ({0;1;2;3;4;5;6;7;8;9};A2&"0123456789"))
ABCD
1АртикулПозиция цифрыТекстЧисло
2FX52003=МИН(НАЙТИ({0;1;2;3;4;5;6;7;8;9};A2&"0123456789"))FX=ЛЕВСИМВ(A2;B2-1)5200=ПСТР(A2;B2;1000)
3x1002=МИН(НАЙТИ({0;1;2;3;4;5;6;7;8;9};A3&"0123456789"))x=ЛЕВСИМВ(A3;B3-1)100=ПСТР(A3;B3;1000)
4MI63=МИН(НАЙТИ({0;1;2;3;4;5;6;7;8;9};A4&"0123456789"))MI=ЛЕВСИМВ(A4;B4-1)6=ПСТР(A4;B4;1000)
5SKU-04515=МИН(НАЙТИ({0;1;2;3;4;5;6;7;8;9};A5&"0123456789"))SKU-=ЛЕВСИМВ(A5;B5-1)0451=ПСТР(A5;B5;1000)

В B2 позиция первой цифры — 3. ЛЕВСИМВ берёт символы до неё, ПСТР — всё, начиная с неё. В SKU-0451 ведущий ноль сохранился, потому что результат — текст.

В английском Excel: =MIN(FIND({0,1,2,3,4,5,6,7,8,9},A2&"0123456789"))

Тот же результат даёт формула массива из статьи про позицию первой цифры — её вводят сочетанием Ctrl+Shift+Enter (в Excel 365 — просто Enter):

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

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

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

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

Разделить текст и число пробелом в одной ячейке
C2=ЛЕВСИМВ(A2;ПОИСКПОЗ(ЛОЖЬ;ЕОШ(ПСТР(A2;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A2)));1)-1);0)-1)&" "&ПСТР(A2;ПОИСКПОЗ(ЛОЖЬ;ЕОШ(ПСТР(A2;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A2)));1)-1);0);9999)
ABC
1ТекстПозиция цифрыЧерез пробел
2FX52003=ПОИСКПОЗ(ЛОЖЬ;ЕОШ(ПСТР(A2;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A2)));1)-1);0)FX 5200=ЛЕВСИМВ(A2;ПОИСКПОЗ(ЛОЖЬ;ЕОШ(ПСТР(A2;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A2)));1)-1);0)-1)&" "&ПСТР(A2;ПОИСКПОЗ(ЛОЖЬ;ЕОШ(ПСТР(A2;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A2)));1)-1);0);9999)
3x1002=ПОИСКПОЗ(ЛОЖЬ;ЕОШ(ПСТР(A3;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A3)));1)-1);0)x 100=ЛЕВСИМВ(A3;ПОИСКПОЗ(ЛОЖЬ;ЕОШ(ПСТР(A3;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A3)));1)-1);0)-1)&" "&ПСТР(A3;ПОИСКПОЗ(ЛОЖЬ;ЕОШ(ПСТР(A3;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A3)));1)-1);0);9999)
4MI63=ПОИСКПОЗ(ЛОЖЬ;ЕОШ(ПСТР(A4;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A4)));1)-1);0)MI 6=ЛЕВСИМВ(A4;ПОИСКПОЗ(ЛОЖЬ;ЕОШ(ПСТР(A4;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A4)));1)-1);0)-1)&" "&ПСТР(A4;ПОИСКПОЗ(ЛОЖЬ;ЕОШ(ПСТР(A4;СТРОКА(ДВССЫЛ("1:"&ДЛСТР(A4)));1)-1);0);9999)

ПСТР(…)-1 даёт ошибку для букв и число для цифр, ЕОШ превращает это в ИСТИНА/ЛОЖЬ, а ПОИСКПОЗ находит первую ЛОЖЬ — первую цифру. В Excel 2019 и раньше — Ctrl+Shift+Enter.

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

Если ячейка начинается с цифр, ищем позицию первого символа, который не является цифрой: ПОИСКПОЗ ищет ИСТИНА в массиве «символ — не цифра». В Excel 365 формула вводится обычным Enter, в более ранних версиях — Ctrl+Shift+Enter:

Разделить число и единицу измерения
B2=ЛЕВСИМВ(A2;ПОИСКПОЗ(ИСТИНА;ЕОШ(--ПСТР(A2;СТРОКА($1:$20);1));0)-1)
ABC
1ЗначениеЧислоТекст
22021г2021=ЛЕВСИМВ(A2;ПОИСКПОЗ(ИСТИНА;ЕОШ(--ПСТР(A2;СТРОКА($1:$20);1));0)-1)г=ПСТР(A2;ПОИСКПОЗ(ИСТИНА;ЕОШ(--ПСТР(A2;СТРОКА($1:$20);1));0);1000)
34K4=ЛЕВСИМВ(A3;ПОИСКПОЗ(ИСТИНА;ЕОШ(--ПСТР(A3;СТРОКА($1:$20);1));0)-1)K=ПСТР(A3;ПОИСКПОЗ(ИСТИНА;ЕОШ(--ПСТР(A3;СТРОКА($1:$20);1));0);1000)
415кг15=ЛЕВСИМВ(A4;ПОИСКПОЗ(ИСТИНА;ЕОШ(--ПСТР(A4;СТРОКА($1:$20);1));0)-1)кг=ПСТР(A4;ПОИСКПОЗ(ИСТИНА;ЕОШ(--ПСТР(A4;СТРОКА($1:$20);1));0);1000)
5128GB128=ЛЕВСИМВ(A5;ПОИСКПОЗ(ИСТИНА;ЕОШ(--ПСТР(A5;СТРОКА($1:$20);1));0)-1)GB=ПСТР(A5;ПОИСКПОЗ(ИСТИНА;ЕОШ(--ПСТР(A5;СТРОКА($1:$20);1));0);1000)

СТРОКА($1:$20) перебирает первые 20 символов — этого достаточно для коротких значений. ПСТР за пределами строки возвращает пустоту, а её тоже нельзя превратить в число, поэтому формула не ломается.

В английском Excel: =LEFT(A2,MATCH(TRUE,ISERROR(--MID(A2,ROW($1:$20),1)),0)-1)

Разделить текст и цифры регулярными выражениями

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

В Excel 365 есть встроенная функция РЕГЗАМЕНИТЬ (REGEXREPLACE): =СЖПРОБЕЛЫ(РЕГЗАМЕНИТЬ(A1;"(\d+|\D+)";"$1 ")) вставит пробел между всеми группами букв и цифр. Шаблон «\d+» — группа цифр, «\D+» — группа не-цифр, «$1 » — найденная группа и пробел после неё. Та же формула работает в Google Таблицах и в Excel с !SEMTools.

Разделить любые чередования букв и цифр
B4=СЖПРОБЕЛЫ(REGEXREPLACE(A4;"(\d+|\D+)";"$1 "))
AB
1ТекстЧасти через пробел
2FX5200FX 5200=СЖПРОБЕЛЫ(REGEXREPLACE(A2;"(\d+|\D+)";"$1 "))
32021г2021 г=СЖПРОБЕЛЫ(REGEXREPLACE(A3;"(\d+|\D+)";"$1 "))
4iPhone15ProiPhone 15 Pro=СЖПРОБЕЛЫ(REGEXREPLACE(A4;"(\d+|\D+)";"$1 "))

Шаблон находит подряд идущие цифры или подряд идущие нецифры и ставит после каждого фрагмента пробел. СЖПРОБЕЛЫ убирает пробел в конце.

В английском Excel: =TRIM(REGEXREPLACE(A2,"(\d+|\D+)","$1 "))

В Google Таблицах

В Google Таблицах с английской локалью аргументы разделяются запятыми:

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

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

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

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

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

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

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

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

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

Почему текст и цифры разделяются неправильно

  • Дробное число разбилось на части. Запятая — не цифра, поэтому «4,2Ghz» разделится на «4» и «,2Ghz». Для таких данных используйте регулярное выражение с дробной частью: =REGEXEXTRACT(A2;"\d+([.,]\d+)?").
  • Ошибка #Н/Д. В ячейке нет ни одной цифры (или ни одной буквы для формулы с ИСТИНА) — ПОИСКПОЗ ничего не находит. Оберните формулу в ЕСЛИОШИБКА.
  • Число не суммируется. ЛЕВСИМВ и ПСТР возвращают текст. Если нужно число, добавьте два минуса: =--ПСТР(A2;B2;1000). Для артикулов оставляйте текст, чтобы не потерять ведущие нули.
  • Ошибка #ИМЯ? в формуле с регулярным выражением. В вашей версии Excel нет РЕГЗАМЕНИТЬ — используйте формулы выше или функцию REGEXREPLACE из !SEMTools.

Разделить текст и цифры — частые вопросы

Как отделить цифры от текста в ячейке?

Найдите позицию первой цифры формулой =МИН(НАЙТИ({0;1;2;3;4;5;6;7;8;9};A2&"0123456789")), затем возьмите текст ЛЕВСИМВ до неё и число ПСТР начиная с неё.

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

Регулярным выражением: =СЖПРОБЕЛЫ(REGEXREPLACE(A2;"(\d+|\D+)";"$1 ")). В Excel 365 функция называется РЕГЗАМЕНИТЬ.

Как разнести текст и цифры по разным столбцам?

Формулами ЛЕВСИМВ и ПСТР из этой статьи в два соседних столбца или процедурой !SEMTools с выводом результата в соседний столбец.

Можно ли разделить текст и цифры без формул?

Да, мгновенным заполнением: введите в соседнем столбце текстовую часть первой ячейки и нажмите Ctrl+E. Для разнородных данных надёжнее процедура !SEMTools.

Разделить текст и цифры прямо в ячейках или с выводом в соседний столбец можно в 2 клика с !SEMTools — без формул массива и поиска позиции первой цифры.
!SEMTools решает эту и сотни других задач в пару кликов!

Итоги: как разделить текст и цифры в Excel

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

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*