Znajdź wszystkie mecze w skoroszycie za pomocą Excel VBA
Próbuję napisaćVBA
procedura, która weźmie ciąg, przeszuka dany skoroszyt programu Excel i zwróci mi wszystkie możliwe dopasowania.
Obecnie mam implementację, która działa, ale jest bardzo powolna, ponieważ jest to pętla podwójna dla. Oczywiście zbudowany w ExceluFind
funkcja jest „zoptymalizowana” w celu znalezienia pojedynczego dopasowania, ale chciałbym, aby zwróciła tablicę początkowych dopasowań, do których mogę następnie zastosować dalsze metody.
Opublikuję pseudokod tego, co już mam
For all sheets in workbook
For all used rows in worksheet
If cell matches search string
do some stuff
end
end
end
Jak już wcześniej wspomniano, ta podwójna pętla powoduje, że wszystko działa bardzo powoli, więc staram się tego pozbyć, jeśli to możliwe. Jakieś sugestie?
AKTUALIZACJA
Chociaż poniższe odpowiedzi poprawiłyby moją metodę, skończyło się na czymś nieco innym, ponieważ musiałem wielokrotnie wykonywać wiele zapytań.
Zamiast tego postanowiłem zapętlić wszystkie wiersze w moim dokumencie i utworzyć słownik zawierający klucz dla każdego unikalnego wiersza. Wartość, którą to wskazuje, będzie wtedy listą możliwych dopasowań, więc gdy zapytam później, mogę po prostu sprawdzić, czy istnieje, a jeśli tak, po prostu uzyskać szybką listę dopasowań.
Zasadniczo po prostu wykonuję jeden wstępny przegląd, aby przechowywać wszystko w zarządzalnej strukturze, a następnie odpytuję tę strukturę, w której można to zrobićO(1)
czas