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 |