[hide][/hide]Всем привет. Который раз обращаюсь к Вам всем за помощью. Есть большая таблица и есть минус слова (около 300). Необходимо удалять всю строку, если в определенном столбце встречается это "минус-слово"( Не всегда слово, чаще оно состоит из двух-трех слов. ). Вопрос в следующем, можно ли прогнать всю таблицу по этим минус словам за один подход? Все минус слова идентичны табличным (везде одинаковый регистр, одинаково располагаются знаки препинания). Пытался это реализовать с помощью этого кода
Sub УдалениеСтрокПоНесколькимУсловиям() Dim ra As Range, delra As Range, isFoundAny As Boolean
' ищем и удаляем строки, содержащие заданный текст ' (можно указать сколько угодно значений, и использовать подстановочные знаки)
УдалятьСтрокиСТекстом = Array ("") ' перебираем все строки в используемом диапазоне листа For Each ra In ActiveSheet.UsedRange.Rows ' перебираем все фразы в массиве isFoundAny = False For Each word In УдалятьСтрокиСТекстом ' если в очередной строке листа найден искомый текст If Not ra.Find(word, , xlValues, xlPart) Is Nothing Then isFoundAny = True Exit For End If Next word If Not isFoundAny Then If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra) End If Next
' если подходящие строки найдены, то: (оставьте одну из 2 следующих строк) If Not delra Is Nothing Then delra.EntireRow.Delete End Sub
но мои слова не умещаются в одну строку и из-за этого возникает ошибка. Я не силен в VBA, но этот пример рабочий. Вот только кто-бы подсказал, как мне запихнуть в него около 300 минус-слов, или же эта идея бред. Всем заранее спасибо, что уделяете свое время неучу)
[hide][/hide]Всем привет. Который раз обращаюсь к Вам всем за помощью. Есть большая таблица и есть минус слова (около 300). Необходимо удалять всю строку, если в определенном столбце встречается это "минус-слово"( Не всегда слово, чаще оно состоит из двух-трех слов. ). Вопрос в следующем, можно ли прогнать всю таблицу по этим минус словам за один подход? Все минус слова идентичны табличным (везде одинаковый регистр, одинаково располагаются знаки препинания). Пытался это реализовать с помощью этого кода
Sub УдалениеСтрокПоНесколькимУсловиям() Dim ra As Range, delra As Range, isFoundAny As Boolean
' ищем и удаляем строки, содержащие заданный текст ' (можно указать сколько угодно значений, и использовать подстановочные знаки)
УдалятьСтрокиСТекстом = Array ("") ' перебираем все строки в используемом диапазоне листа For Each ra In ActiveSheet.UsedRange.Rows ' перебираем все фразы в массиве isFoundAny = False For Each word In УдалятьСтрокиСТекстом ' если в очередной строке листа найден искомый текст If Not ra.Find(word, , xlValues, xlPart) Is Nothing Then isFoundAny = True Exit For End If Next word If Not isFoundAny Then If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra) End If Next
' если подходящие строки найдены, то: (оставьте одну из 2 следующих строк) If Not delra Is Nothing Then delra.EntireRow.Delete End Sub
но мои слова не умещаются в одну строку и из-за этого возникает ошибка. Я не силен в VBA, но этот пример рабочий. Вот только кто-бы подсказал, как мне запихнуть в него около 300 минус-слов, или же эта идея бред. Всем заранее спасибо, что уделяете свое время неучу)Inertecs
Сообщение отредактировал Inertecs - Воскресенье, 03.09.2017, 08:13