Jämför 2 kolumner genom VBA i Microsoft Excel

Anonim

Om du undrar hur du jämför två kolumner med data med rader i miljoner och extraherar de unika värdena mellan båda kolumnerna, bör du läsa den här artikeln. Vi kommer att använda VBA -kod för att jämföra två kolumner med data och visa skillnaden i nästa två kolumner.

Fråga: Det finns flera värden som finns i kolumnerna A & B. Jag vill att ett makro ska kontrollera mer än 40 k rader med data i båda kolumnerna och sedan extrahera listan med unika poster från var och en av kolumnen till nästa kolumn, dvs kolumner C & D respektive. I det här exemplet tar jag bara 40 rader med provdata.

Du hittar den ursprungliga frågan här
Följande är ögonblicksbilden av data:

För att jämföra listan över två kolumner måste vi följa stegen nedan för att starta VB -editor:

  • Klicka på fliken Utvecklare
  • Välj Visual Basic i kodgruppen

  • Kopiera koden nedan i standardmodulen
 Sub PullUniques () Dim rngCell som intervall för varje rngCell i intervall ("A2: A40") If WorksheetFunction.CountIf (Range ("B2: B40"), rngCell) = 0 Then Range ("C" & Rows.Count). End (xlUp) .Offset (1) = rngCell End If Next för varje 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 

  • Ovanstående makro är redo att köras; antingen kan vi trycka på F5 -tangenten -om du för närvarande är i Visual Basic Editor -skärmen -eller kan vi använda genvägstangenterna "ALT + F8", välj ditt makro och klicka på kör -knappen

  • Den unika listan från kolumnerna A & B genereras automatiskt i kolumnerna C & D

Kodförklaring:

I koden ovan kommer vi att använda IF -funktionen tillsammans med For loop för att få resultatet.

  • Vi deklarerar Dim rngCell som intervall; syftet med att deklarera rngCell As Range är att vi vill tilldela provintervallet "A2: A40" med ett specifikt namn, dvs "rngCell" i vårt exempel
  • För varje rngCell In Range ("A2: A40"); vi kommer att kontrollera varje cell i "rngCell" med ett villkor
  • Om WorksheetFunction.CountIf (Range ("B2: B40"), rngCell) = 0 Då; denna kodrad använder COUNTIF VBA -funktionen för att kontrollera kriterieintervall B2: B40 med kriterierna rngCell är lika med noll, sedan sparas värdet i rngCell i kolumn C i kolumn C, sedan sparas värdet i rngCell
  • På samma sätt kommer vi att köra För varje loop för kolumn B & extrahera de unika värdena i kolumn D

Slutsats: Vi kan få den unika listan med text eller värden från var och en av kolumnen; rubrikens namn på kolumn C (Resultat - Finns i lista 1 men inte i lista 2) och kolumn D (resultat - finns i lista 2 men inte i lista 1). Om vi ​​har liknande krav men antalet kolumner är mer än två måste vi justera koden för att få resultatet.

Om du gillade våra bloggar, dela den med dina vänner på Facebook. Och du kan också följa oss på Twitter och Facebook.
Vi vill gärna höra från dig, låt oss veta hur vi kan förbättra, komplettera eller förnya vårt arbete och göra det bättre för dig. Skriv till oss på e -postsajt