VBA - Wypełnij tablicę unikalnymi wartościami z kolumny

Ten samouczek nauczy Cię, jak wypełnić tablicę unikalnymi wartościami z kolumny w VBA.

Wypełnij tablicę unikalnymi wartościami z kolumny

Przeniesienie listy wartości z arkusza Excela do tablicy polega na przejściu przez wiersze w Excelu i wypełnieniu tablicy.

Rozważ poniższą listę klientów w arkuszu Excel.

Używając pętli, moglibyśmy wypełnić tablicę w VBA. Jednak standardowa pętla przejdzie przez każdy wiersz, w tym zduplikowane wiersze, i otrzymasz zduplikowane wartości w tablicy.

Rozwiązanie polegające na przejściu w pętli przez komórki i wypełnieniu obiektu Collection wartościami jako obiektu kolekcji nie pozwoli na duplikaty. Następnie możesz użyć tego obiektu kolekcji do wypełnienia tablicy.

1234567891011121314151617181920212223242526 Sub PopulateUniqueArray()Dim StrCustomers() jako ciągDim Col jako nowa kolekcjaDim valCell As StringDim i jako liczba całkowitaDim n jako liczba całkowita'policz wiersze w zakresien = Range("A1", Range("A1").End(xlDown)).Rows.Count'Wypełnij tymczasową kolekcjęPrzy błędzie Wznów DalejDla i = 0 To nvalCell = Range("A1").Offset(i, 0).ValueKol.Dodaj valCell, valCellDalej jaBłąd.WyczyśćW przypadku błędu Przejdź do 0'Zmień rozmiar n'n = liczba kol.'Przedeklaruj tablicęReDim StrKlienci(1 do n)„Wypełnij tablicę, przeglądając kolekcję”Dla i = 1 To Col.CountSTRKlienci(i) = Kol(i)Dalej jaDołącz do debugowania. Drukuj (StrCustomers(), vbCrLf)Napis końcowy

Wypełnij tablicę wartościami unikalnymi - funkcja

Powyższy przykład pokazuje procedurę, która wykona żądane działania. Ale zamiast tego możesz preferować przenośną funkcję do wykonania zadania:

123456789101112131415161718192021222324 Funkcja CreateUniqueList(nStart as Long, nEnd as Long) as VariantDim Col jako nowa kolekcjaCiemny arrTemp() Jak StrunowyDim valCell As StringDim i jako liczba całkowita'Wypełnij tymczasową kolekcjęPrzy błędzie Wznów DalejDla i = 0 To nEndvalCell = Range("A" & nStart).Offset(i, 0).ValueKol.Dodaj valCell, valCellDalej jaBłąd.WyczyśćW przypadku błędu Przejdź do 0'Zmień rozmiar n'nKoniec = Liczba kol.'Przedeklaruj tablicęReDim arrTemp(1 do końca )'Wypełnij tablicę tymczasową, przeglądając kolekcjęDla i = 1 To Col.CountarrTemp(i) = Kol(i)Dalej ja'zwróć tymczasową tablicę do wyniku funkcjiUtwórzUnikalnąListę = arrTemp()Koniec funkcji

Aby użyć funkcji, musisz wywołać ją z procedury podrzędnej:

123456789 Sub PopulateArray()Dim StrCustomers() jako ciągDim strCol jako kolekcjaDim n As Long'policz wiersze w zakresien = Range("A1", Range("A1").End(xlDown)).Rows.Count'uruchom funkcję, aby utworzyć tablicę unikalnych wartościstrKlienci() = UtwórzUnikalnąListę(1,n)Napis końcowy
wave wave wave wave wave