See õpetus õpetab teile, kuidas täita massiivi unikaalsete väärtustega VBA veerust.
Täitke massiiv unikaalsete väärtustega veerust
Väärtuste loendi võtmine Exceli lehelt massiiviks on Exceli ridade sirvimine ja massiivi täitmine.
Kaaluge järgmist klientide loendit Exceli lehel.
Tsükli abil saaksime massiivi VBA -s täita. Tavaline silmus liigub aga läbi iga rea, sealhulgas dubleerivad read, ja saate massiivis duplikaatväärtusi.
Lahendus lahtrite läbimiseks ja kogumisobjekti väärtuste täitmiseks kogumisobjektina ei luba duplikaate. Seejärel saate seda kogumisobjekti kasutada oma massiivi täitmiseks.
1234567891011121314151617181920212223242526 | Sub populateUniqueArray ()Dim StrCustomers () stringinaDim Col nagu uus kollektsioonDim valCell kui stringDim i As täisarvDim n Nagu täisarv'loendage vahemiku readn = vahemik ("A1", vahemik ("A1"). lõpp (xlDown)). Ridad. arv'Täida ajutine koguVea korral Jätka järgmistSest i = 0 kuni nvalCell = Vahemik ("A1"). Nihe (i, 0) .VäärtusKol. Lisage valCell, valCellEdasi iViga. SelgeViga GoTo 0'Muuda suurust nn = veerg'Taastada massiivReDim StrCustomers (1 kuni n)„Asustage massiivi, kogudes kogu ringiSest i = 1 veerguStrCustomers (i) = Col (i)Edasi iSilumine. Prindi liitumine (StrCustomers (), vbCrLf)End Sub |
Massiivi täitmine ainulaadsete väärtustega - funktsioon
Ülaltoodud näide näitas protseduuri, mis täidaks teie soovitud toiminguid. Selle asemel võiksite ülesande täitmiseks eelistada kaasaskantavat funktsiooni:
123456789101112131415161718192021222324 | Funktsioon CreateUniqueList (nStart nii pikk, nEnd nii kaua) kui variantDim Col nagu uus kollektsioonDim arrTemp() Nagu StringDim valCell kui stringDim i As täisarv'Täida ajutine koguVea korral Jätka järgmistSest i = 0 kuni lõpunivalCell = Vahemik ("A" & nStart) .Nihke (i, 0) .VäärtusKol. Lisage valCell, valCellEdasi iViga. SelgeViga GoTo 0'Muuda suurust nnEnd = veerg'Taastada massiivReDim arrTemp(1 kuni lõpp)„Täitke ajutine massiiv, kogudes kogu ringiSest i = 1 veerguarrTemp(i) = veerg (i)Edasi i'tagastab ajutise massiivi funktsiooni tulemuseleCreateUniqueList = arrTemp()Lõppfunktsioon |
Funktsiooni kasutamiseks peate selle helistama alamprotseduurilt:
123456789 | Sub PopulateArray ()Dim StrCustomers () stringinaDim strCol kollektsiooninaDim n Nagu pikk'loendage vahemiku readn = vahemik ("A1", vahemik ("A1"). lõpp (xlDown)). Ridad. arv'käivitage funktsioon unikaalsete väärtuste massiivi loomiseksstrCustomers () = CreateUniqueList (1, n)End Sub |