VBA - aizpildiet masīvu ar unikālām vērtībām no kolonnas

Šī 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() 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š
wave wave wave wave wave