Страницы: 1
RSS
Удаление в ячейке части текста, заданной из формы
 
Добрый день форумчане! Возник вопрос и сам ни как не могу с ним справиться. Есть таблица в которую попадают данные (числа) из формы. В одну ячейку может попасть одно число, а могут попасть несколько чисел разделенных запятой и пробелом. Задача: В форму вводится число, которое нужно найти в столбце, удалить эту ячейку (строку) - с этим ясно, а если в ячейке, где находится это число, несколько чисел, то удалить число с запятой после числа и пробел (если число вначале или в середине списка чисел) или число с пробелом и запятой перед числом (если число в конце списка чисел) и выделить эту ячейку - вот с этим вопрос.
 
Цитата
В форму вводится число, которое нужно найти в столбце
Цитата
а если в ячейке, где находится это число, несколько чисел,
У вас в коде    
Код
Set cell = ListObj.ListColumns.Item(1).Range.Find(UserForm1.TextBox1.Value, LookAt:=xlWhole)
мне кажется надо выбрать параметр LookAt:=xlPart
и анализировать найденную ячейку на наличие в ней нескольких чисел
 
Полностью согласен с Kuzmich, тоже собирался это написать.
ИМХО, решение Вашей проблемы лежит в области регулярных выражений:
https://www.planetaexcel.ru/techniques/7/4844/  - описание того, что это за зверь;
https://vremya-ne-zhdet.ru/vba-excel/regulyarnyye-vyrazheniya/  - более подробное описание того, как это реализовать в Excel
http://qaru.site/questions/5774141/excel-vba-regular-expression-to-remove-leading-number-period-and-space - очень короткий пример работы с регулярными выражениями для удаления текста.

З.Ы. Не забудьте, что у Вас совпадение может встречаться в нескольких ячейках.
З.З.Ы. Нужно обдумать контроль, чтобы не вбить случайно в поиск одно-два числа коротких числа и не запороть всю таблицу.
Я не волшебник, я только учусь.
 
Спасибо, буду пробовать.
 
Вроде бы всё работает как надо. Строчки с MsgBox можно закомментить, чтобы не отвлекали.
Изменено: Wiss - 10.10.2019 14:47:42
Я не волшебник, я только учусь.
 
Wiss, Большое спасибо, сейчас протестирую, отпишусь.
 
Точно будет косяк, если в ячейке будет написано «искомыйТекст, искомыйТекст», то есть если в ячейке будет только искомое слово, причём 2 раза. Поправить сейчас возможности нету.
Я не волшебник, я только учусь.
 
Wiss, Работает так как надо при определенном диапазоне, но если строк в таблице будет больше, понимаю, хоть я не специалист, что надо заменить.Range("A2:A16") в строчке For Each c In ActiveSheet.Range("A2:A16"), но на что, ни как не соображу. Извиняюсь, что-то совсем затупил.
 
Цитата
Alexey74 написал:
Работает так как надо при определенном диапазоне, но если строк в таблице будет больше, понимаю, хоть я не специалист, что надо заменить.Range("A2:A16") в строчке For Each c In ActiveSheet.Range("A2:A16"), но на что, ни как не соображу. Извиняюсь, что-то совсем затупил.
Все, разобрался. Огромное спасибо за помощь и ссылки с интересной информацией.
Страницы: 1
Наверх