Šī apmācība iemācīs jums aizpildīt masīvu ar unikālām vērtībām no kolonnas VBA.
Masu aizpildiet ar kolonnas unikālajām vērtībām
Vērtību saraksta ņemšana no Excel lapas masīvā ir Excel rindu atkārtošana un masīva aizpildīšana.
Apsveriet šādu klientu sarakstu Excel lapā.
Izmantojot cilpu, mēs varētu aizpildīt masīvu VBA. Tomēr standarta cilpa iet caur katru rindu, ieskaitot dublikātu rindas, un masīvā jūs iegūsit dublētas vērtības.
Risinājums, lai cilpotu šūnas un aizpildītu kolekcijas objektu ar vērtībām kā kolekcijas objekts, neļaus dublēt. Pēc tam varat izmantot šo kolekcijas objektu, lai aizpildītu savu masīvu.
1234567891011121314151617181920212223242526 | Sub populateUniqueArray ()Dim StrCustomers () kā virkneDim Col kā jauna kolekcijaDim valCell kā virkneDim i As IntegerDim n Kā vesels skaitlis'saskaitiet diapazona rindasn = diapazons ("A1", diapazons ("A1"). beigas (xlDown)). Rindas. skaits'Apdzīvot pagaidu kolekcijuPar kļūdu Atsākt nākamoAttiecībā uz i = 0 līdz nvalCell = Diapazons ("A1"). Nobīde (i, 0). VērtībaKol. Pievienot valCell, valCellTālāk iKļūda. SkaidrsKļūda GoTo 0'Mainīt izmēru nn = kolonnas skaitlis'Atkārtoti masīvsReDim StrCustomers (no 1 līdz n)"Apdzīvojiet masīvu, izmantojot kolekcijuAttiecībā uz i = 1 uz kolonnu skaituStrCustomers (i) = Col (i)Tālāk iAtkļūdot. Drukāt pievienošanos (StrCustomers (), vbCrLf)Beigu apakš |
Masīva aizpildīšana ar unikālām vērtībām - funkcija
Iepriekš minētais piemērs parādīja procedūru, kas veic jūsu vēlamās darbības. Bet tā vietā uzdevuma veikšanai jūs varētu dot priekšroku pārnēsājamai funkcijai:
123456789101112131415161718192021222324 | Funkcija CreateUniqueList (nStart kā garš, nEnd tik ilgi) kā VariantDim Col kā jauna kolekcijaIzmērs arrTemp() Kā StīgaDim valCell kā virkneDim i As Integer"Apdzīvot pagaidu kolekcijuPar kļūdu Atsākt nākamoAttiecībā uz i = 0 līdz beigāmvalCell = Diapazons ("A" un nStart). Nobīde (i, 0). VērtībaKol. Pievienot valCell, valCellTālāk iKļūda. SkaidrsKļūda GoTo 0'Mainīt izmēru nnEnd = Col.Count'Atkārtoti masīvsReDim arrTemp(No 1 līdz beigām)"Apdzīvojiet pagaidu masīvu, veicot kolekcijuAttiecībā uz i = 1 uz kolonnu skaituarrTemp(i) = kolonna (i)Tālāk i'atgriež pagaidu masīvu funkcijas rezultātamCreateUniqueList = arrTemp()Beigu funkcija |
Lai izmantotu funkciju, tā jāizsauc, izmantojot apakšprocedūru:
123456789 | Sub PopulateArray ()Dim StrCustomers () kā virkneDim strCol kā kolekcijaDim n tik ilgi'saskaitiet diapazona rindasn = diapazons ("A1", diapazons ("A1"). beigas (xlDown)). Rindas. skaits"palaidiet funkciju, lai izveidotu unikālu vērtību masīvustrCustomers () = CreateUniqueList (1, n)Beigu apakš |