Ovaj vodič će vas naučiti kako popuniti niz jedinstvenim vrijednostima iz stupca u VBA -i.
Popuni niz s jedinstvenim vrijednostima iz stupca
Uzimanje popisa vrijednosti s Excelovog lista u niz stvar je prolaska kroz retke u Excelu i popunjavanja niza.
Razmotrite sljedeći popis kupaca u Excel listu.
Koristeći petlju, mogli bismo popuniti niz u VBA. Međutim, standardna petlja će se provlačiti kroz svaki redak, uključujući duplicirane retke, pa ćete završiti s dupliciranim vrijednostima u svom nizu.
Rješenje za prolazak kroz ćelije i popunjavanje objekta Zbirke vrijednostima kao objekt zbirke neće dopustiti duplikate. Zatim možete koristiti taj objekt zbirke za popunjavanje vašeg niza.
1234567891011121314151617181920212223242526 | Sub PopulateUniqueArray ()Dim StrCustomers () As StringDim Col kao nova kolekcijaDim valCell As StringDim i Kao cijeli brojDim n kao cijeli broj'broji retke u rasponun = Raspon ("A1", Raspon ("A1"). Kraj (xlDown)). Rows.Count'Napuni privremenu zbirkuUključeno Slijedi nastavak greškeZa i = 0 To nvalCell = Raspon ("A1"). Odmak (i, 0) .VrijednostPukovnik.Dodaj valCell, valCellSljedeći iGreška.JasnoUključeno Greška Idi na 0'Promijeni veličinu nn = Col.Count'Redeclare nizReDim StrCustomers (1 To n)'Napunite niz prolaskom kroz zbirkuZa i = 1 Za stupStrCustomers (i) = Col (i)Sljedeći iDebug.Print Join (StrCustomers (), vbCrLf)Kraj podm |
Populacijski niz w/ jedinstvene vrijednosti - funkcija
Gornji primjer pokazao je postupak koji bi izveo vaše željene radnje. No, umjesto toga, radije biste željeli prijenosnu funkciju za izvršavanje zadatka:
123456789101112131415161718192021222324 | Funkcija CreateUniqueList (nStart as Long, nEnd as long) kao VariantDim Col kao nova kolekcijaDim arrTemp() Kao NizDim valCell As StringDim i Kao cijeli broj'Napuni privremenu zbirkuUključeno Slijedi nastavak greškeZa i = 0 do nEndvalCell = Raspon ("A" & nStart) .Offset (i, 0) .VrijednostPukovnik.Dodaj valCell, valCellSljedeći iGreška.JasnoUključeno Greška Idi na 0'Promijeni veličinu nnEnd = Col.Count'Redeclare nizReDim arrTemp(1 KRAJU)'Popuni privremeni niz ponavljanjem kroz zbirkuZa i = 1 Za stuparrTemp(i) = Col (i)Sljedeći i'vratite privremeni niz u rezultat funkcijeCreateUniqueList = arrTemp()Završna funkcija |
Da biste koristili funkciju, morat ćete je pozvati iz podpostupka:
123456789 | Potpopulacijski niz ()Dim StrCustomers () As StringDim strCol kao zbirkaDim n As Long'broji retke u rasponun = Raspon ("A1", Raspon ("A1"). Kraj (xlDown)). Rows.Count'pokrenite funkciju za stvaranje niza jedinstvenih vrijednostistrCustomers () = CreateUniqueList (1, n)Kraj podm |