Sammenlign 2 kolonner gjennom VBA i Microsoft Excel

Anonim

Hvis du lurer på hvordan du skal sammenligne to kolonner med data som har rader i millioner og trekke ut de unike verdiene blant begge kolonnene, bør du lese denne artikkelen. Vi vil bruke VBA -kode til å sammenligne to kolonner med data og vise forskjellen i de neste to kolonnene.

Spørsmål: Det er flere verdier som finnes i kolonner A & B. Jeg vil at en makro skal sjekke mer enn 40 k rader med data i begge kolonnene og deretter trekke ut listen over unike oppføringer fra hver av kolonnene til den neste kolonnen, dvs. kolonner C Henholdsvis & D. I dette eksemplet tar jeg bare 40 rader med eksempeldata.

Du finner det originale spørsmålet her
Følgende er øyeblikksbildet av data:

For å sammenligne listen over to kolonner, må vi følge trinnene nedenfor for å starte VB -editor:

  • Klikk på kategorien Utvikler
  • Velg Visual Basic fra kodegruppen

  • Kopier koden nedenfor i standardmodulen
 Sub PullUniques () Dim rngCell As Range For Every rngCell In Range ("A2: A40") If WorksheetFunction.CountIf (Range ("B2: B40"), rngCell) = 0 Then Range ("C" & Rows.Count). End (xlUp) .Offset (1) = rngCell End If Next for Every rngCell In Range ("B2: B40") If WorksheetFunction.CountIf (Range ("A2: A40"), rngCell) = 0 Then Range ("D" & Rows.Count) .End (xlUp) .Offset (1) = rngCell End If Next End Sub 

  • Makroen ovenfor er klar til å kjøres; enten kan vi trykke på F5 -tasten -hvis du for øyeblikket er i Visual Basic Editor -skjermen -eller vi kan bruke hurtigtaster "ALT + F8", velg makroen din og klikk på kjør -knappen

  • Den unike listen fra kolonnene A & B genereres automatisk i kolonnene C & D

Kode Forklaring:

I koden ovenfor vil vi bruke IF -funksjonen sammen med For loop for å få resultatet.

  • Vi erklærer Dim rngCell som Range; formålet med å deklarere rngCell As Range er at vi vil tilordne prøveområdet "A2: A40" med et bestemt navn, dvs. "rngCell" i vårt eksempel
  • For hver rngCell In Range ("A2: A40"); vi vil sjekke for hver celle i "rngCell" med en tilstand
  • Hvis WorksheetFunction.CountIf (Range ("B2: B40"), rngCell) = 0 Da; denne kodelinjen bruker COUNTIF VBA -funksjonen til å sjekke kriteriumsområde B2: B40 med kriterier rngCell er lik null, så i kolonne C vil verdien som er lagret i rngCell bli lagret
  • På samme måte vil vi kjøre For Every Loop for column B & extract the unique values ​​in column D

Konklusjon: Vi kan få den unike listen med tekst eller verdier fra hver av kolonnen; toppnavnet til kolonnen C (Resultater - finnes i liste 1, men ikke i liste 2) og kolonne D (resultater - finnes i liste 2, men ikke i liste 1). Hvis vi har lignende krav, men antallet kolonner er mer enn to, må vi justere koden for å få resultatet.

Hvis du likte bloggene våre, del den med vennene dine på Facebook. Og du kan også følge oss på Twitter og Facebook.
Vi vil gjerne høre fra deg, gi oss beskjed om hvordan vi kan forbedre, utfylle eller innovere arbeidet vårt og gjøre det bedre for deg. Skriv oss på e -post nettsted