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 |