В меру своих усилий (новичок в VBA) я пытался написать, используя стек и другие ресурсы, макрос, который позволил бы мне сканировать данный список строк в Excel по сравнению с другим гораздо большим списком для возможных частичных совпадений (Vlookup кажется, не делает трюк и Instr намного лучше для этого кажется). Мне удалось заставить работать некоторый код, который использует al oop для сканирования определенного диапазона c и поиска единственной интересующей строки. Например, допустим, у меня есть 20 ячеек в столбце C с различными названиями фруктов и овощей, и я хотел бы выделить только те, которые мне интересны c. В приведенном ниже примере кода я включил строку «Cher» (для Cherry) для поиска по диапазону, который, если найден, создает попадание справа от столбца поиска.
Мой главный вопрос: настроить код так, чтобы я мог не только искать одну строку, например «Cherry», но и как запустить ее для очень длинного списка, например, из 200 элементов при работе с парой тысяч строк данных?
Sub listchecker()
Dim cell As Range
For Each cell In Range("C2:C20")
If InStr(cell.Value, "Cher") > 0 Then
cell.Offset(0, 1).Value = cell.Value
End If
Next cell
End Sub
Заранее благодарю за помощь!
Спасибо NautMeg и SRJ за предложения, приведенные ниже. Я изменил код, и теперь он работает с массивом, как указано ниже (ура)
Dim wordsArray() As Variant
wordsArray = Worksheets("Keywords").Range("B2:B439").Value
Dim word As Variant
Dim cell As Range
For Each cell In Worksheets("Normalized").Range("J2:J49010")
For Each word In wordsArray
If InStr(cell.Value, word) > 0 Then
cell.Offset(0, -1).Value = cell.Value
End If
Next word
Next cell
Единственное, что я сейчас понял, это то, что было бы лучше для 'cell.Offset (0). , -1) .Value = cell.Value 'фактически для заполнения соответствием массива (ключевым словом), а не значением ячейки. Это потому, что ключевое слово может быть слишком широким или слишком общим c и приводить к ложным срабатываниям. Возврат значения ячеек вместо совпадения из массива усложняет жизнь для поиска неисправностей / выявления плохого ключевого слова broad / generi c, например, ("is").