VBA - Napolni niz z edinstvenimi vrednostmi iz stolpca

Ta vadnica vas bo naučila, kako v stolpec v VBA napolnite polje z edinstvenimi vrednostmi.

Napolni niz z edinstvenimi vrednostmi iz stolpca

Če vnesete seznam vrednosti iz Excelovega lista v matriko, gre za ponavljanje po vrsticah v Excelu in zapolnitev matrike.

Razmislite o naslednjem seznamu strank v Excelovem listu.

Z zanko bi lahko v VBA naselili niz. Vendar pa bo standardna zanka krožila skozi vsako vrstico, vključno z podvojenimi vrsticami, na koncu pa boste imeli v svojem nizu podvojene vrednosti.

Rešitev za prehod po celicah in poseljevanje predmeta Zbirke z vrednostmi kot predmeta zbiranja ne bo dovolila podvojevanja. Nato lahko ta zbirni objekt uporabite za polnjenje matrike.

1234567891011121314151617181920212223242526 Sub PopulateUniqueArray ()Dim StrCustomers () As StringDim Col kot nova zbirkaDim valCell As StringDim i kot celo številoDim n kot celo število'štejte vrstice v obsegun = Razpon ("A1", Razpon ("A1"). Konec (xlDown)). Vrstice. Število„Naseli začasno zbirkoOn Napaka Nadaljuj NaprejZa i = 0 Za nvalCell = Obseg ("A1"). Odmik (i, 0) .VrednostCol.Ad valCell, valCellNaprej iNapaka JasnoPri napaki Pojdi na 0'Spremeni velikost nn = Število stolpcev'Odkupi nizReDim StrCutomers (1 proti n)'Napolni niz tako, da se pomikaš skozi zbirkoZa i = 1 do števStrCustomers (i) = Col (i)Naprej iDebug.Print Join (StrCustomers (), vbCrLf)End Sub

Napolni niz z edinstvenimi vrednostmi - funkcija

Zgornji primer je pokazal postopek, ki bi izvedel vaša želena dejanja. Namesto tega bi za izvedbo naloge morda raje uporabili prenosno funkcijo:

123456789101112131415161718192021222324 Funkcija CreateUniqueList (nStart as Long, nEnd as long) kot VariantDim Col kot nova zbirkaDim arrTemp() As VrvicaDim valCell As StringDim i kot celo število„Naseli začasno zbirkoOn Napaka Nadaljuj NaprejZa i = 0 do nEndvalCell = Obseg ("A" & nStart). Odmik (i, 0). VrednostCol.Ad valCell, valCellNaprej iNapaka JasnoPri napaki Pojdi na 0'Spremeni velikost nnEnd = Število stolpcev"Odkupi nizReDim arrTemp(1 NA NAKON)'Zapolnite začasno matriko tako, da se pomikate po zbirkiZa i = 1 do števarrTemp(i) = stolpec (i)Naprej i'vrni začasno matriko v rezultat funkcijeCreateUniqueList = arrTemp()Končana funkcija

Če želite uporabljati funkcijo, jo morate poklicati iz podprocedure:

123456789 Sub PopulateArray ()Dim StrCustomers () As StringZatemni strCol kot zbirkoDim n As Long'štejte vrstice v obsegun = Razpon ("A1", Razpon ("A1"). Konec (xlDown)). Vrstice. Število'zaženite funkcijo, da ustvarite niz edinstvenih vrednostistrCustomers () = CreateUniqueList (1, n)End Sub
wave wave wave wave wave