Innehållsförteckning
Denna handledning lär dig hur du tar bort dubbletter från en matris i VBA.
Ta bort dubbletter
Det enklaste sättet att ta bort dubbletter från en VBA Array är att tilldela array -värdena till en VBA -samling och sedan skicka tillbaka värdena till en array. Samlingar tillåter inte dubblettvärden och därför kan vi med hjälp av en samling ta bort dubbletter från en array. Vi har skapat en funktion för att utföra den här uppgiften:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | Funktion ArrayRemoveDups (MyArray som variant) Som variantDim nFirst As Long, nLast As Long, i As LongDim objekt som strängDim arrTemp () Som strängDim Coll As New Collection'Få första och sista matrispositionernFirst = LBound (MyArray)nLast = UBound (MyArray)ReDim arrTemp (nFirst To nLast)'Konvertera matris till strängFör i = nFirst To nLastarrTemp (i) = CStr (MyArray (i))Nästa i'Befolkas tillfällig samlingVid fel Återuppta nästaFör i = nFirst To nLastLägg till arrTemp (i), arrTemp (i)Nästa iErr.TydligVid fel GoTo 0'Ändra storlek på matrisennLast = Coll.Count + nFirst - 1ReDim arrTemp (nFirst To nLast)'Populate ArrayFör i = nFirst To nLastarrTemp (i) = Coll (i - nFirst + 1)Nästa i'Output ArrayArrayRemoveDups = arrTempAvsluta funktionSub ArrTest ()Dim strNames (1 till 4) som strängDim outputArray () som strängDim i As LongDim objekt som variant'Ställ in initiala matrisvärdenstrNames (1) = "Shelly"strNames (2) = "Steve"strNames (3) = "Neema"strNames (4) = "Steve"'Call Dup -funktionoutputArray = ArrayRemoveDups (strNames)'Utmatningsvärden till omedelbart fönster (CTRL + G)För varje objekt i outputArrayDebug.Print -objektNästa objektAvsluta Sub |
Obs! I exemplet tvingade vi vår Array att börja vid 1 (inte 0). Om din array börjar med 0 måste du ändra koden något.
Lägg märke till att vi konverterar matrisinnehållet till en sträng. Om det behövs kan du konvertera strängarna tillbaka till heltal när processen är klar.