VBA - Verwijder duplicaten uit array

Inhoudsopgave

In deze zelfstudie leert u hoe u duplicaten uit een array in VBA kunt verwijderen.

Duplicaten verwijderen

De eenvoudigste manier om duplicaten uit een VBA-array te verwijderen, is door de arraywaarden toe te wijzen aan een VBA-verzameling en de waarden vervolgens door te geven aan een array. Collecties staan ​​geen dubbele waarden toe en dus met behulp van een collectie kunnen we duplicaten uit een array verwijderen. We hebben een functie gemaakt om deze taak uit te voeren:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 Functie ArrayRemoveDups(MyArray As Variant) As VariantDim nEerste zo lang, nLaatste zo lang, ik zo langDim item als stringDim arrTemp() As StringDim Coll als nieuwe collectie'Verkrijg eerste en laatste array-posities'nEerste = LBound(MyArray)nLaatste = UBound(MijnArray)ReDim arrTemp (nEerste Naar nLaatste)'Array converteren naar string'Voor i = nEerste Tot nLaatstearrTemp(i) = CStr(MijnArray(i))volgende i'Tijdelijke collectie bevolken'Bij fout Hervatten volgendeVoor i = nEerste Tot nLaatsteColl.ArrTemp(i), arrTemp(i) toevoegenvolgende iErr.ClearBij fout Ga naar 0'Formaat van array wijzigen'nLaatste = Verzameltelling + nEerste - 1ReDim arrTemp (nEerste Naar nLaatste)'Array bevolken'Voor i = nEerste Tot nLaatstearrTemp(i) = Coll(i - nEerste + 1)volgende i'Uitvoerarray'ArrayRemoveDups = arrTempFunctie beëindigenSub ArrTest()Dim strNames (1 tot 4) als stringDim outputArray() As StringDim ik zo langDim item als variant'Initiële arraywaarden instellen'strNames(1) = "Shelly"strNames(2) = "Steve"strNames(3) = "Neema"strNames(4) = "Steve"'Call Dup-functie'outputArray = ArrayRemoveDups(strNames)'Uitvoerwaarden naar direct venster (CTRL + G)Voor elk item In outputArrayDebug.Print itemVolgende itemEinde sub

Opmerking: in het voorbeeld hebben we onze array gedwongen om bij 1 te beginnen (niet bij 0). Als uw array begint bij 0, moet u de code enigszins wijzigen.

Merk op dat we de array-inhoud naar een string converteren. Indien nodig kunt u de tekenreeksen terug converteren naar gehele getallen nadat het proces is voltooid.

wave wave wave wave wave