Найти все совпадения в книге, используя Excel VBA
Я пытаюсь написатьVBA
подпрограмма, которая будет принимать строку, искать заданную книгу Excel и возвращать мне все возможные совпадения.
В настоящее время у меня есть реализация, которая работает, но это очень медленно, так как это двойной цикл for. Конечно встроенный в ExcelFind
функция "оптимизировано» чтобы найти одно совпадение, но я бы хотел, чтобы он возвращал массив исходных совпадений, к которым я мог бы затем применить дополнительные методы.
Я выложу некоторый псевдокод того, что у меня уже есть
For all sheets in workbook
For all used rows in worksheet
If cell matches search string
do some stuff
end
end
end
Как уже говорилось ранее, этот двойной цикл for заставляет вещи работать очень медленно, поэтому я надеюсь избавиться от этого, если это возможно. Какие-либо предложения?
ОБНОВИТЬ
Хотя приведенные ниже ответы могли бы улучшить мой метод, в итоге я пошел по-другому, поскольку мне нужно было повторять несколько запросов снова и снова.
Вместо этого я решил перебрать все строки в моем документе и создать словарь, содержащий ключ для каждой уникальной строки. Значение, на которое оно указывает, будет тогда списком возможных совпадений, поэтому, когда я сделаю запрос позже, я просто смогу проверить, существует ли он, и если да, просто получить быстрый список совпадений.
По сути, просто выполнить одну начальную проверку, чтобы сохранить все в управляемой структуре, а затем запросить эту структуру, которую можно выполнить вO(1)
время