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