Часто перед пользователями табличного редактора Эксель встает такая задача, когда необходимо удалить всю текстовую информацию в ячейках, а числовые данные оставить. Для осуществления этой процедуры существует множество способов. В статье мы детально разберем каждый метод, позволяющий оставить числа и убрать текст в ячейках.
Способы удаления текста и сохранения числовой информации
Представим, что у нас есть такая информация, располагающаяся в ячейке: «Было доставлено кусков мыла 763шт». Нам необходимо сделать так, чтобы осталось только значение 763 для проведения разнообразных математических операций. Хорошо, если нужно избавиться от текстовых данных только в одной ячейке, тогда можно реализовать удаление ручным способом, но этот вариант не подходит, когда в табличке находится слишком много разной информации. Здесь необходимо применять различные специальные функции табличного редактора.
Первый метод: использование специальной формулы
Для реализации этой процедуры можно применять специальную массивную формулу. Примерная формула выглядит так:
=ПСТР(A1;МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(А1;СТРОКА($1:$99);1));СТРОКА($1:$99)));ПРОСМОТР(2;1/ЕЧИСЛО(-ПСТР(А1;СТРОКА($1:$99);1));СТРОКА($1:$99))-МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(А1;СТРОКА($1:$99);1));СТРОКА($1:$99)))+1)
Разберем основные моменты:
- Специальную формулу необходимо вбивать в поле при помощи комбинации кнопок «Ctrl+Shift+Enter».
- Стоит заметить, что в таком виде массивная формула может использоваться только с текстовой информацией, в которой число знаков не больше 99. Для увеличения диапазона нужно, к примеру, заменить параметр «СТРОКА($1:$99)» на «СТРОКА($1:$200)». Иными словами, мы вместо показателя 99 вводим число знаков с запасом. Если ввести слишком большой диапазон, то обработка формулы может занять длительное время.
- Если в текстовых данных числовые значения разбросаны по всему тексту, то формула не сможет правильно обработать информацию.
Детально рассмотрим специальную массивную формулу на таком примере: «Было доставлено кусков мыла 763шт., а заказывали 780»
- В поле А1 располагается сама текстовая информация, из которой мы будем извлекать числовые данные.
- Фрагмент: МИН(ЕСЛИ(ЕЧИСЛО(-ПСТР(А1;СТРОКА($1:$99);1));СТРОКА($1:$99))) позволяет определить позицию 1-го значения в поле. Получаем значение 29.
- Фрагмент: ПРОСМОТР(2;1/ЕЧИСЛО(-ПСТР(А1;СТРОКА($1:$99);1));СТРОКА($1:$99)) позволяет определить позицию последнего значения в поле. Получаем значение 31.
- Мы получаем такую формулу: =ПСТР(А1;29;31-29+1). Оператор ПСТР позволяет извлечь из текстовой информации, указанной 1-м аргументом, начиная с заданной позиции (29) с числом знаков, заданным 3-м аргументом.
- В результате мы получаем:
=ПСТР(А1;29;31-29+1)- =ПСТР(А1;29;2+1)
- =ПСТР(А1;29;3)
- 763
Бывают ситуации обратные, когда нужно реализовать операцию извлечения односоставных текстовых данных, исключив числа.
Нам необходимо сохранить только текстовую информацию.
Специальная формула применяется по аналогичному алгоритму, что и вышерассмотренная. Она выглядит так: =ПСТР(А1;ПОИСК(«-«;А1)+1;ПОИСКПОЗ(ИСТИНА;ЕЧИСЛО(—ПСТР(ПСТР(А1;ПОИСК(«-«;А1)+1;999);СТРОКА($1:$99);1));0)-1)
Здесь мы, благодаря фрагменту ПОИСК(«-«;А1) отыскали локацию тире, а затем при помощи оператора ПОИСКПОЗ нашли в извлеченных текстовых данных позицию 1-го числа. Передали эти показатели в оператор ПСТР, который реализовал все дальнейшие преобразования.
Второй метод: использование специального макроса
Эту процедуру можно реализовать при помощи специального макроса, созданного в табличном редакторе Эксель. К примеру, у нас есть табличка, в которой существует колонка с текстовой информацией и числовыми данными. Нам нужно оставить только числовые данные, убрав при этом текст.
В табличном редакторе отсутствует интегрированная функция, поэтому нам необходимо создать такой пользовательский макрос:
Public Function GetNumbers(TargetCell As Range) As String
Dim LenStr As Long
For LenStr = 1 To Len(TargetCell)
Select Case Asc(Mid(TargetCell, LenStr, 1))
Case 48 To 57
GetNumbers = GetNumbers & Mid(TargetCell, LenStr, 1)
End Select
Next
End Function
Подробная инструкция по созданию пользовательского макроса выглядит так:
- Используя специальную комбинацию клавиш «Alt+F11», производим открытие редактора VBA. Альтернативный вариант – нажать ПКМ по рабочему листу и выбрать элемент «Исходный текст».
- Реализуем создание нового модуля. Для осуществления этой процедуры жмем левой клавишей мышки на элемент, имеющий наименование «Insert», а затем выбираем объект «Module».
- Производим копирование кода, который располагается выше, и вставляем его в созданный модуль. Копирование реализуем при помощи сочетания клавиш «Ctrl+C», а вставку – «Ctrl+V».
- Теперь в необходимой ячейке, в которой мы планируем вывести только числовую информацию, вбиваем такую формулу: =GetNumbers(А1).
- Нам нужно растянуть формулу вниз на все ячейки колонки. Для этого наводим указатель на нижний правый уголок ячейки. Курсор принял форму небольшого плюсика темного цвета. Зажимаем левую клавишу мышки и протягиваем формулу вниз до окончания таблички.
- Готово! Мы реализовали извлечение числовой информации при помощи специального макроса.
Заключение и выводы о процедуре извлечение
Мы выяснили, что существует несколько способов, позволяющих реализовать извлечение числовой информации. Осуществить эту операцию можно при помощи создания специальных макросов в редакторе VBA или же используя массивную формулу. Каждый пользователь может самостоятельно выбрать для себя наиболее удобный способ, который позволит ему убрать текстовую информацию из ячейки и оставить при этом числовые данные.