Как удалить из текстовых ячеек все символы, кроме цифр, таким образом «вытащив» из них цифры? Есть несколько простых и непростых решений.

Заменой остальных символов

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

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

С помощью пользовательских функций (UDF)

Пример пользовательской функции, которая поможет с извлечением чисел из текста:

Function extrNum(x As String) As Long   
   For n = 1 To Len(x)   
       If Mid(x, n, 1) Like "#" Then extrNum = extrNum & Mid(x, n, 1)   
   Next n   
End Function

Как применить данный код:
— Внедрить его в новый модуль книги (используемой сейчас или в личной книге макросов)
— Применить функцию на листе в подобном виде: =extrNum(A1)

С помощью синтаксиса регулярных выражений

Регулярные выражения — отличный помощник при работе с текстовыми данными. Их синтаксис для обработки простых паттернов довольно прост, но возможностей все усложнить предостаточно.

Как в платной, так и в бесплатной версии !SEMTools есть функции:

  • regexReplace, берущая на вход 3 аргумента — строку с данными, текст регулярного выражения и строку для замены.
  • regexExtract с двумя аргументами — строкой и паттерном для извлечения.

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

=REGEXREPLACE(A1;"[^\d]";"")

Выражение для извлечения первой сплошной последовательности цифр:

=REGEXEXTRACT(A1;"\d+")

Что потребуется:
Установить !SEMTools
— Применить функции

Извлечь цифры из текста в 1 клик

Пользователям платной версии !SEMTools доступна возможность извлекать цифры моментально прямо «на месте», не прописывая никаких функций.

Макрос находится в группе «ИЗВЛЕЧЬ» в меню «Извлечь символы».


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

Видеоинструкция

Удалить текст, а цифры оставить — именно такова механика алгоритма !SEMTools. Смотрите короткий видеопример:

Извлечение цифр из ячеек со смешанным содержимым в !SEMTools

Протестировать работу можно и не покупая лицензию, но обрабатываться будет только ~2/3 данных.

Добавить комментарий