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 |