Просто вопрос об эффективности здесь. Я по существу перебираю ячейки в столбце, чтобы увидеть, содержит ли они определенную строку, но тогда эта ячейка также не должна включать в себя ни одну из 14 разных строк. Мое текущее решение состоит в том, чтобы найти строку, а затем выполнить цикл через массив, используя instr в ячейке. Однако это произойдет, возможно, сотни раз, когда выполняется макрос. Мне любопытно, есть ли лучший способ.VBA - Поиск строки для всех значений в массиве
Например:
NotArr = Array("blah1", "blah2", "blah3", "etc")
For r = 1 to 10
'Let's assume I've already found the first string
For i = 1 to 4
If Not InStr(Cells(r, 1).value, NotArr(i)) > 0 Then
'Do things
End If
Next i
Next r
Примечание: Я знаю, что я, вероятно, overthinking или просто отсутствует очевидное. Я был похоронен в VBA около 6 недель @ 10-часовых дней и может чувствовать, что мой мозг тает.
Спасибо всем!
Вы можете сделать это быстрее, если вы также установите диапазон в массиве, чтобы вы не возвращались к листу столько раз. Или, по крайней мере, поместите значение каждой ячейки в переменную и проверьте, что она также сократит количество ссылок на ячейку на листе. –
Взаимодействие с листом (с использованием 'Cells()' in macro) несколько раз замедляет макрос. Вы можете сохранить диапазон поиска в массиве, а затем использовать массив в макросе, чтобы увеличить скорость. И некоторые основные вещи, такие как держать расчеты в ручном режиме и отключать обновление экрана. –
Спасибо, ребята, это полезно. Это быстрее! –