Jak skutecznie odnaleźć unikalne wartości z tablicy Array?
powyższe pytanie usłyszałem podczas kursu VBA prowadzonego ostatnio w Warszawie.
Osobiście stosuję dwie (lub trzy) techniki odszukiwania unikatów:
Technika 1. wartości tablicy wrzucamy w pionowy, czysty obszar arkusza, następnie stosując polecenie usuwania duplikatów (RemoveDuplicates) pozbywamy się zbędnych elementów, a następnie wynik pobieramy do naszej tablicy w kodzie VBA. Przyznam jednak, że rozwiązanie to nie należy do najbardziej efektywnych.
Technika 2. o wiele łatwiej i skuteczniej będzie sięgnąć po obiekt kolekcji (Collection) w VBA. W tym celu wykorzystamy fakt, że dodanie elementu do kolekcji, nie jest możliwe jeżeli element taki już istnieje. Jeżeli podejmujemy taką próbę to kompilator zwraca błąd wykonania. W naszej procedurze zignorujemy taki błąd w wyniku czego zignorujemy jednocześnie dany element.
03 | Dim arrKolekcja As New Collection |
04 | Dim Element As Variant |
05 | Dim arrTablica As Variant |
09 | arrTablica = Array( "Do" , "Re" , "Mi" , "Do" , "Fa" , "Sol" , _ |
10 | "Re" , "Mi" , "Fa" , "La" , "Do" , "Si" , _ |
12 | "fa" , "sol" , "LA" , "sI" ) |
17 | For Each Element In arrTablica |
18 | arrKolekcja.Add Element, Element |
26 | For i = 1 To arrKolekcja.Count |
27 | Cells(i, 1) = arrKolekcja(i) |
Więcej informacji na temat kolekcji znaleźć można pod
tym linkiem.
Kolekcje nie są jedynym czysto programistycznym sposobem na uzyskanie unikatów z tablicy. O alternatywnej technice napiszę w osobnym poście. Zapraszam do lektury już wkrótce.
Brak komentarzy:
Prześlij komentarz