Fjern dubletter i Excel VBA - Enkle Excel -makroer

Innholdsfortegnelse

Nedenfor ser vi på et program i Excel VBA at fjerner duplikater.

Situasjon:

I kolonne A har vi 10 tall. Vi ønsker å fjerne duplikatene fra disse tallene og plassere de unike tallene i kolonne B.

1. For det første erklærer vi fire variabler. toLegg til av typen boolsk, unikNummer av typen Heltall, i av typen Heltall og j av typen Heltall.

Dim toAdd As Boolean, uniqueNumbers As Integer, i As Integer, j As Integer

2. Deretter skriver vi det første tallet i kolonne A til kolonne B siden det første tallet alltid er "unikt".

Celler (1, 2) .Value = Celler (1, 1) .Værdi

3. Vi initialiserer to variabler. Vi har nettopp lagt til ett tall i kolonne B, så vi initialiserer uniqueNumbers med verdien 1. Vi setter til Legg til i True forutsatt at det neste tallet også må legges til (dette er ikke nødvendigvis sant selvfølgelig).

uniqueNumbers = 1
toAdd = True

Vi må avgjøre om det andre tallet er "unikt" eller ikke. Dette kan gjøres på en veldig enkel måte. Bare hvis tallet ikke allerede er i kolonne B, må det andre tallet legges til i kolonne B.

4. Vi må også sjekke dette for det tredje tallet, fjerde nummeret og så videre. Vi starter en For Next loop for dette.

For i = 2 til 10

5. Nå kommer den viktigste delen av programmet. Hvis det andre tallet er lik et av tallene i kolonne B (så langt har vi bare ett unikt tall), setter vi til Legg til i Falsk fordi vi i dette tilfellet ikke vil legge til dette tallet! (det er ikke "unikt"). For øyeblikket er uniqueNumbers fortsatt lik 1, men uniqueNumbers kan være en hel liste. For å sjekke hele listen trenger vi en annen For Next loop. Igjen: hvis tallet vi vil legge til er lik et av tallene i denne listen, blir toAdd satt til False og tallet vil ikke bli lagt til. Legg til følgende kodelinjer:

For j = 1 Til uniqueNumbers
If Cells (i, 1) .Value = Cells (j, 2) .Value Then
toAdd = False
Slutt om
Neste j

6. Bare hvis toAdd fortsatt er True og ikke er satt til False, må Excel VBA legge til tallet i kolonne B. Samtidig øker vi uniqueNumbers med 1 fordi vi har ett unikt nummer mer nå. Følgende kodelinjer får jobben gjort:

Hvis toAdd = True Then
Celler (uniqueNumbers + 1, 2) .Value = Celler (i, 1) .Value
uniqueNumbers = uniqueNumbers + 1
Slutt om

7. Til slutt setter vi tilAdd to True forutsatt at neste nummer (tredje nummer) må legges til. Igjen er dette ikke nødvendigvis sant.

toAdd = True

8. Ikke glem å lukke løkken.

Neste jeg

9. Plasser makroen i en kommandoknapp og test den.

Resultat:

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave