Š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 |