VBA - Usuń duplikaty z tablicy

Spisie treści

Ten samouczek nauczy Cię, jak usunąć duplikaty z tablicy w VBA.

Usuń duplikaty

Najłatwiejszym sposobem usunięcia duplikatów z tablicy VBA jest przypisanie wartości tablicy do kolekcji VBA, a następnie przekazanie wartości z powrotem do tablicy. Kolekcje nie zezwalają na zduplikowane wartości, dlatego korzystając z Kolekcji, możemy usunąć duplikaty z tablicy. Stworzyliśmy funkcję do wykonania tego zadania:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 Funkcja ArrayRemoveDups (MyArray As Variant) jako VariantDim nFirst As Long, nLast As Long, i As LongPrzyciemnij element jako ciągDim arrTemp() jako ciągDim Coll jako nowa kolekcja'Uzyskaj pierwszą i ostatnią pozycję w tablicynFirst = LBound(MyArray)nOstatnia = UBound(MyArray)ReDim arrTemp (nFirst To nLast)'Konwertuj tablicę na ciągDla i = nFirst To nLastarrTemp(i) = CStr(MyArray(i))Dalej ja'Wypełnij tymczasową kolekcjęPrzy błędzie Wznów DalejDla i = nFirst To nLastKol.Dodaj arrTemp(i), arrTemp(i)Dalej jaBłąd.WyczyśćW przypadku błędu Przejdź do 0'Zmień rozmiar tablicynOstatnia = Liczba kol. + nPierwsza - 1ReDim arrTemp (nFirst To nLast)'Wypełnij tablicęDla i = nFirst To nLastarrTemp(i) = Kol(i - nFirst + 1)Dalej ja„Tablica wyjściowa”ArrayRemoveDups = arrTempKoniec funkcjiSub ArrTest()Dim strNames(1 do 4) As StringDim outputArray() As StringPrzyciemnij i tak długoPrzyciemnij element jako wariant'Ustaw początkowe wartości tablicystrNames(1) = "Shell"strNames(2) = "Marek"strNames(3) = "Neema"strNames(4) = "Marek"'Funkcja przejmowania połączeńoutputArray = ArrayRemoveDups(strNames)'Wartości wyjściowe do okna bezpośredniego (CTRL + G)Dla każdego elementu w tablicy wyjściowejDebug.Drukuj elementNastępny przedmiotNapis końcowy

Uwaga: W tym przykładzie zmusiliśmy naszą tablicę, aby zaczynała się od 1 (nie 0). Jeśli twoja tablica zaczyna się od 0, będziesz musiał nieznacznie zmodyfikować kod.

Zauważ, że konwertujemy zawartość tablicy na łańcuch. Jeśli to konieczne, możesz przekonwertować łańcuchy z powrotem na liczby całkowite po zakończeniu procesu.

wave wave wave wave wave