VBA - Populate Array med unika värden från kolumnen

Denna handledning lär dig hur du fyller i en array med unika värden från en kolumn i VBA.

Befolkningsgrupp med unika värden från kolumn

Att ta en lista med värden från ett Excel -ark till en matris handlar om att gå igenom raderna i Excel och fylla i matrisen.

Tänk på följande kundlista i ett Excel -ark.

Med hjälp av en loop kan vi fylla i en Array i VBA. En standardslinga går dock igenom varje rad, inklusive dubblerade rader och du kommer att få dubblettvärden i din matris.

Lösningen att gå igenom cellerna och fylla i ett samlingsobjekt med värdena som ett samlingsobjekt tillåter inte dubbletter. Du kan sedan använda det samlingsobjektet för att fylla i din matris.

1234567891011121314151617181920212223242526 Sub PopulateUniqueArray ()Dim StrCustomers () Som strängDim Col As New CollectionDim valCell som strängDim i As IntegerDim n Som heltal'räkna raderna i intervalletn = Range ("A1", Range ("A1"). End (xlDown)). Rows.Count'Befolkas tillfällig samlingVid fel Återuppta nästaFör i = 0 Till nvalCell = Range ("A1"). Offset (i, 0) .VärdeKol. Lägg till valCell, valCellNästa iErr.TydligVid fel GoTo 0'Ändra storlek nn = Kol.antal'Redeclare arrayReDim StrCustomers (1 till n)'Populate Array genom att bläddra igenom samlingenFör i = 1 Till kol.räkningStrCustomers (i) = Col (i)Nästa iDebug.Print Join (StrCustomers (), vbCrLf)Avsluta Sub

Befolkningsgrupp med unika värden - funktion

Exemplet ovan visade ett förfarande som skulle utföra dina önskade åtgärder. Men istället kanske du föredrar en bärbar funktion för att utföra uppgiften:

123456789101112131415161718192021222324 Funktion CreateUniqueList (nStart as Long, nEnd as long) som VariantDim Col As New CollectionDämpa arrTemp() Som SträngDim valCell som strängDim i As Integer'Befolkas tillfällig samlingVid fel Återuppta nästaFör i = 0 Till nEndvalCell = Range ("A" & nStart) .Offset (i, 0) .VärdeKol. Lägg till valCell, valCellNästa iErr.TydligVid fel GoTo 0'Ändra storlek nnEnd = Col.Count'Redeclare arrayReDim arrTemp(1 Till nEnd)'Befolkning av tillfällig matris genom att gå igenom samlingenFör i = 1 Till kol.räkningarrTemp(i) = kol (i)Nästa i'returnera den temporära matrisen till funktionsresultatetCreateUniqueList = arrTemp()Avsluta funktion

För att använda funktionen måste du ringa den från ett delprocedur:

123456789 Sub PopulateArray ()Dim StrCustomers () Som strängDim strCol som samlingDim n As Long'räkna raderna i intervalletn = Range ("A1", Range ("A1"). End (xlDown)). Rows.Count'kör funktionen för att skapa en rad unika värdenstrCustomers () = CreateUniqueList (1, n)Avsluta Sub
wave wave wave wave wave