VBA - užpildykite masyvą unikaliomis vertėmis iš stulpelio

Ši pamoka išmokys jus, kaip užpildyti masyvą unikaliomis vertėmis iš VBA stulpelio.

Užpildykite masyvą unikaliomis vertėmis iš stulpelio

Vertių sąrašo perėmimas iš „Excel“ lapo į masyvą yra „Excel“ eilučių peržiūra ir masyvo užpildymas.

Apsvarstykite šį klientų sąrašą „Excel“ lape.

Naudodami kilpą, mes galime užpildyti masyvą VBA. Tačiau standartinė kilpa eis per kiekvieną eilutę, įskaitant pasikartojančias eilutes, ir jūs gausite pasikartojančias reikšmes savo masyve.

Sprendimas pereiti per langelius ir užpildyti kolekcijos objektą vertėmis kaip surinkimo objektas neleis pasikartoti. Tada galite naudoti tą kolekcijos objektą masyvui užpildyti.

1234567891011121314151617181920212223242526 Sub populateUniqueArray ()Dim StrCustomers () kaip eilutėDim Col kaip nauja kolekcijaDim valCell As StringDim i As IntegerDim n Kaip sveikasis skaičius'suskaičiuokite diapazono eilutesn = Diapazonas ("A1", Diapazonas ("A1"). Pabaiga (xlDown)). Eilutės. Skaičius„Gyventi laikinoje kolekcijojeDėl klaidos Tęsti toliauJei i = 0 iki nvalCell = Diapazonas ("A1"). Poslinkis (i, 0). VertėPulk. Pridėti valCell, valCellKitas I.Klaida. AiškuKlaida „GoTo 0“„Pakeisti dydį nn = stulpelis„Iš naujo paskelbti masyvą„ReDim Str“ klientai (nuo 1 iki n)„Užpildykite masyvą peržiūrėdami kolekcijąJei i = 1 į stulpStrCustomers (i) = Col (i)Kitas I.Derinti. Spausdinti prisijungimą („StrCustomers ()“, „vbCrLf“)Pabaiga Sub

Masyvo užpildymas unikaliomis vertėmis - funkcija

Aukščiau pateiktas pavyzdys parodė procedūrą, kuri atliks jūsų norimus veiksmus. Tačiau vietoj to, norėdami atlikti užduotį, jums labiau patinka nešiojamoji funkcija:

123456789101112131415161718192021222324 Funkcija CreateUniqueList (nStart as Long, nEnd as long) kaip VariantDim Col kaip nauja kolekcijaMat arrTemp() Kaip StyginėDim valCell As StringDim i As Integer„Gyventi laikinoje kolekcijojeDėl klaidos Tęsti toliauJei i = 0 iki pabaigosvalCell = Diapazonas („A“ ir „nStart“). Poslinkis (i, 0) .VertybėPulk. Pridėti valCell, valCellKitas I.Klaida. AiškuKlaida „GoTo 0“„Pakeisti dydį nnPabaiga = stulpelis„Iš naujo paskelbti masyvąReDim arrTemp(Nuo 1 iki pabaigos)„Užpildykite laikiną masyvą, peržiūrėdami kolekcijąJei i = 1 į stulparrTempi) = i stulpelisKitas I."grąžinkite laikiną masyvą į funkcijos rezultatąCreateUniqueList = arrTemp()Pabaigos funkcija

Jei norite naudoti funkciją, turėsite ją iškviesti atlikdami papildomą procedūrą:

123456789 Sub PopulateArray ()Dim StrCustomers () kaip eilutė„Dim strCol“ kaip kolekcijaDim n Kaip ilgai'suskaičiuokite diapazono eilutesn = Diapazonas ("A1", Diapazonas ("A1"). Pabaiga (xlDown)). Eilutės. Skaičius“paleiskite funkciją, kad sukurtumėte unikalių verčių masyvąstrCustomers () = CreateUniqueList (1, n)Pabaiga Sub
wave wave wave wave wave