VBA - Populate Array with Unique Values ​​from Column

Tento tutoriál vás naučí, ako naplniť pole jedinečnými hodnotami zo stĺpca vo VBA.

Naplňte pole jedinečnými hodnotami zo stĺpca

Prevzatie zoznamu hodnôt z hárka programu Excel do poľa je záležitosťou opakovania riadkov v programe Excel a vyplnenia poľa.

Zvážte nasledujúci zoznam zákazníkov v hárku programu Excel.

Pomocou slučky by sme mohli naplniť pole vo VBA. Štandardná slučka však bude prechádzať každým riadkom vrátane duplicitných riadkov a vo svojom poli skončíte s duplicitnými hodnotami.

Riešenie, ako prebehnúť bunkami a naplniť objekt zbierky hodnotami ako objekt zbierky, nedovolí duplikáty. Tento zbierkový objekt potom môžete použiť na naplnenie svojho poľa.

1234567891011121314151617181920212223242526 SubpopulateUniqueArray ()Dim StrCustomers () ako reťazecDim Col ako nová kolekciaDim valCell As StringDim i As IntegerDim n ako celé číslo„spočítajte riadky v rozsahun = Rozsah ("A1", Rozsah ("A1"). Koniec (xlDown)). Riadky. Počet„Populujte dočasnú zbierkuPri chybe Pokračovať ďalejPre i = 0 až nvalCell = Rozsah ("A1"). Ofset (i, 0). HodnotaCol.Add valCell, valCellĎalej iErr. JasnéPri chybe GoTo 0„Zmeniť veľkosť čn = Col.Count„Znova deklarovať poleZákazníci ReDim Str (1 až n)„Naplňte pole opakovaním v zbierkePre i = 1 do stĺpcaStrCustomers (i) = Col (i)Ďalej iPripojenie Debug.Print (StrCustomers (), vbCrLf)Koniec pod

Populate Array w/ Unique Values ​​- Function

Vyššie uvedený príklad ukázal postup, ktorý by vykonal požadované akcie. Namiesto toho však môžete na vykonanie úlohy uprednostniť prenosnú funkciu:

123456789101112131415161718192021222324 Funkcia CreateUniqueList (nStart as Long, nEnd as long) as VariantDim Col ako nová kolekciaDim arrTemp() Ako ReťazecDim valCell As StringDim i As Integer„Populujte dočasnú zbierkuPri chybe Pokračovať ďalejPre i = 0 až nEndvalCell = Rozsah ("A" & nStart). Offset (i, 0). HodnotaCol.Add valCell, valCellĎalej iErr. JasnéPri chybe GoTo 0„Zmeniť veľkosť čnEnd = Col.Count„Znova deklarovať poleReDim arrTemp(1 až nEnd)'Naplňte dočasné pole slučkou v zbierkePre i = 1 do stĺpcaarrTemp(i) = Col (i)Ďalej i'vráťte dočasné pole do výsledku funkcieCreateUniqueList = arrTemp()Koncová funkcia

Ak chcete používať túto funkciu, musíte ju zavolať z čiastkového postupu:

123456789 Sub PopulateArray ()Dim StrCustomers () ako reťazecDim strCol ako kolekciaDim n As Long„spočítajte riadky v rozsahun = Rozsah ("A1", Rozsah ("A1"). Koniec (xlDown)). Riadky. Počet'spustite funkciu a vytvorte pole jedinečných hodnôtstrCustomers () = CreateUniqueList (1, n)Koniec pod
wave wave wave wave wave