VBA - Array vullen met unieke waarden uit kolom

In deze zelfstudie leert u hoe u een array kunt vullen met unieke waarden uit een kolom in VBA.

Array vullen met unieke waarden uit kolom

Een lijst met waarden uit een Excel-blad in een array opnemen, is een kwestie van door de rijen in Excel lopen en de array vullen.

Bekijk de volgende lijst met klanten in een Excel-sheet.

Met behulp van een lus kunnen we een array in VBA vullen. Een standaardlus loopt echter door elke rij, inclusief dubbele rijen, en u krijgt dubbele waarden in uw array.

De oplossing om door de cellen te lopen en een collectieobject te vullen met de waarden als een collectieobject, staat geen duplicaten toe. U kunt dan dat verzamelingsobject gebruiken om uw array te vullen.

1234567891011121314151617181920212223242526 Sub PopulateUniqueArray()Dim StrCustomers() As StringDim Col als nieuwe collectieDim valCell As StringDim ik als geheel getalDim n als geheel getal'tel de rijen in het bereik'n = Bereik ("A1", Bereik ("A1"). Einde (xlOmlaag)). Rijen. Aantal'Tijdelijke collectie bevolken'Bij fout Hervatten volgendeVoor i = 0 tot nvalCell = Bereik ("A1"). Offset (i, 0). WaardeCol.ValCell toevoegen, valCellvolgende iErr.ClearBij fout Ga naar 0'Formaat wijzigen nrn = Kol.telling'Array opnieuw declareren'ReDim Str Klanten (1 tot n)'Array vullen door door de collectie te bladeren'Voor i = 1 tot Kol. TellingStrKlanten(i) = Kolom(i)volgende iDebug.Print Join(StrCustomers(), vbCrLf)Einde sub

Array vullen met unieke waarden - Functie

Het bovenstaande voorbeeld toonde een procedure die de gewenste acties zou uitvoeren. Maar in plaats daarvan geeft u misschien de voorkeur aan een draagbare functie om de taak uit te voeren:

123456789101112131415161718192021222324 Functie CreateUniqueList(nStart zo lang, nEnd zo lang) als variantDim Col als nieuwe collectiedim arrTemp() Als SnaarDim valCell As StringDim ik als geheel getal'Tijdelijke collectie bevolken'Bij fout Hervatten volgendeVoor i = 0 tot nEindevalCell = Bereik ("A" & nStart). Offset (i, 0). WaardeCol.ValCell toevoegen, valCellvolgende iErr.ClearBij fout Ga naar 0'Formaat wijzigen nrnEinde = Kol.telling'Array opnieuw declareren'ReDim arrTemp(1 tot nEinde)'Tijdelijke array vullen door de verzameling te doorlopen'Voor i = 1 tot Kol. TellingarrTemp(i) = Kol(i)volgende i'retourneer de tijdelijke array naar het functieresultaat'CreateUniqueList = arrTemp()Functie beëindigen

Om de functie te gebruiken, moet u deze aanroepen vanuit een subprocedure:

123456789 Sub PopulateArray()Dim StrCustomers() As StringDim strCol als collectieDim n As Long'tel de rijen in het bereik'n = Bereik ("A1", Bereik ("A1"). Einde (xlOmlaag)). Rijen. Aantal'voer de functie uit om een ​​reeks unieke waarden te maken'strCustomers() = CreateUniqueList(1,n)Einde sub
wave wave wave wave wave