VBA - täitke veerust ainulaadsete väärtustega massiiv

Lang L: none (table-of-contents)

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