VBA - Populate Array with Unique Values ​​from Column

Tento tutoriál vás naučí, jak naplnit pole jedinečnými hodnotami ze sloupce ve VBA.

Naplňte pole jedinečnými hodnotami ze sloupce

Převzetí seznamu hodnot z listu aplikace Excel do pole je otázkou opakování řádků v aplikaci Excel a naplnění pole.

Zvažte následující seznam zákazníků v listu aplikace Excel.

Pomocí smyčky bychom mohli naplnit pole ve VBA. Standardní smyčka však bude procházet každým řádkem, včetně duplicitních řádků, a ve svém poli skončíte s duplicitními hodnotami.

Řešení pro smyčku skrz buňky a naplnění objektu Collection hodnotami jako objekt kolekce nedovolí duplikáty. Poté můžete tento sbírkový objekt použít k naplnění pole.

1234567891011121314151617181920212223242526 Sub PopulateUniqueArray ()Dim StrCustomers () jako řetězecDim Col jako nová kolekceDim valCell As StringDim i As IntegerDim n jako celé číslo'spočítejte řádky v rozsahun = Rozsah ("A1", Rozsah ("A1"). Konec (xlDown)). Rows.Count„Naplňte dočasnou sbírkuPři chybě Pokračovat DalšíPro i = 0 až nvalCell = Rozsah ("A1"). Offset (i, 0). HodnotaCol.Add valCell, valCellPříště jáErr.JasnéPři chybě GoTo 0„Změnit velikost čn = Col.Count"Znovu deklarovat pole."Zákazníci ReDim Str (1 až n)„Naplňte pole smyčkou ve sbírcePro i = 1 do Col.CountStrCustomers (i) = Col (i)Příště jáPřipojení Debug.Print (StrCustomers (), vbCrLf)End Sub

Populate Array w/ Unique Values ​​- Function

Výše uvedený příklad ukázal postup, který by provedl požadované akce. Místo toho však můžete k provedení úkolu upřednostnit přenosnou funkci:

123456789101112131415161718192021222324 Funkce CreateUniqueList (nStart as Long, nEnd as long) as VariantDim Col jako nová kolekceZtlumit arrTemp() Tak jako TětivaDim valCell As StringDim i As Integer„Naplňte dočasnou sbírkuPři chybě Pokračovat DalšíPro i = 0 až nEndvalCell = Rozsah ("A" & nStart). Offset (i, 0). HodnotaCol.Add valCell, valCellPříště jáErr.JasnéPři chybě GoTo 0„Změnit velikost čnEnd = Col.Count"Znovu deklarovat pole."ReDim arrTemp(1 To nEnd)`` Naplňte dočasné pole smyčkou ve sbírcePro i = 1 do Col.CountarrTemp(i) = Col (i)Příště já'vrátit dočasné pole do výsledku funkce.'CreateUniqueList = arrTemp()Koncová funkce

Chcete -li tuto funkci používat, musíte ji zavolat z dílčí procedury:

123456789 Sub PopulateArray ()Dim StrCustomers () jako řetězecDim strCol jako kolekceDim n As Long'spočítejte řádky v rozsahun = Rozsah ("A1", Rozsah ("A1"). Konec (xlDown)). Rows.Count'spusťte funkci a vytvořte řadu jedinečných hodnot.'strCustomers () = CreateUniqueList (1, n)End Sub
wave wave wave wave wave