VBA - Befolkningssæt med unikke værdier fra kolonne

Denne vejledning lærer dig, hvordan du udfylder et array med unikke værdier fra en kolonne i VBA.

Befolk array med unikke værdier fra kolonne

At tage en liste med værdier fra et Excel -ark til et array er et spørgsmål om at gå gennem rækkerne i Excel og udfylde arrayet.

Overvej følgende liste over kunder i et Excel -ark.

Ved hjælp af en loop kunne vi udfylde et array i VBA. Imidlertid vil en standard loop gå gennem hver række, herunder dubletter, og du vil ende med dublerede værdier i dit array.

Løsningen til at gå gennem cellerne og udfylde et samlingsobjekt med værdierne som et samlingsobjekt tillader ikke dubletter. Du kan derefter bruge det indsamlingsobjekt til at udfylde din matrix.

1234567891011121314151617181920212223242526 Sub PopulateUniqueArray ()Dim StrCustomers () Som strengDim Col Som Ny KollektionDim valCell som strengDim i As IntegerDim n Som heltal'tæl rækkerne i intervalletn = Range ("A1", Range ("A1"). End (xlDown)). Rækker.Tælling'Befolk midlertidig samlingVed fejl Genoptag næsteFor i = 0 Til nvalCell = Range ("A1"). Offset (i, 0) .VærdiCol.Add valCell, valCellNæste iErr.KlarVed fejl GoTo 0'Ændre størrelse nn = Col.Count'Reducer arrayReDim StrCustomers (1 til n)'Befolk Array ved at gå gennem samlingenFor i = 1 Til kol.tællingStrCustomers (i) = Col (i)Næste iDebug.Print Join (StrCustomers (), vbCrLf)Afslut Sub

Befolkningssæt med unikke værdier - funktion

Ovenstående eksempel viste en procedure, der ville udføre dine ønskede handlinger. Men i stedet foretrækker du måske en bærbar funktion til at udføre opgaven:

123456789101112131415161718192021222324 Funktion CreateUniqueList (nStart som Long, nEnd as long) som VariantDim Col Som Ny KollektionSvag arrTemp() Som SnorDim valCell som strengDim i As Integer'Befolk midlertidig samlingVed fejl Genoptag næsteFor i = 0 Til nEndvalCell = Range ("A" & nStart) .Offset (i, 0) .VærdiCol.Add valCell, valCellNæste iErr.KlarVed fejl GoTo 0'Tilpas størrelse nnEnd = Col.Count'Reducer arrayReDim arrTemp(1 Til afslutning)'Befolk midlertidig matrix ved at gå gennem samlingenFor i = 1 Til kol.tællingarrTemp(i) = Col (i)Næste i'returner det midlertidige array til funktionsresultatetCreateUniqueList = arrTemp()Afslut funktion

For at bruge funktionen skal du kalde den fra en delprocedure:

123456789 Sub PopulateArray ()Dim StrCustomers () Som strengDim strCol som samlingDim n As Long'tæl rækkerne i intervalletn = Range ("A1", Range ("A1"). End (xlDown)). Rækker.Tælling'kør funktionen for at oprette en række unikke værdierstrCustomers () = CreateUniqueList (1, n)Afslut Sub
wave wave wave wave wave