Vergelijk 2 kolommen via VBA in Microsoft Excel

Anonim

Als u zich afvraagt ​​​​hoe u 2 kolommen met gegevens met rijen in miljoenen kunt vergelijken en de unieke waarden uit beide kolommen kunt extraheren, moet u dit artikel lezen. We zullen VBA-code gebruiken om twee kolommen met gegevens te vergelijken en het verschil in de volgende twee kolommen te laten zien.

Vraag: Er zijn meerdere waarden in kolommen A en B. Ik wil dat een macro meer dan 40 k rijen met gegevens in beide kolommen controleert en vervolgens de lijst met unieke vermeldingen uit elke kolom extraheert naar de volgende kolom, dwz kolommen C & D respectievelijk. In dit voorbeeld neem ik slechts 40 rijen met voorbeeldgegevens.

Je kunt de originele vraag hier vinden
Hieronder volgt een momentopname van gegevens:

Om de lijst met twee kolommen te vergelijken, moeten we de onderstaande stappen volgen om de VB-editor te starten:

  • Klik op het tabblad Ontwikkelaar
  • Selecteer in de codegroep Visual Basic

  • Kopieer onderstaande code in de standaard module
 Sub PullUniques() Dim rngCell As Range voor elke rngCell In Range("A2:A40") If WorksheetFunction.CountIf(Range("B2:B40"), rngCell) = 0 Dan Range("C" & Rows.Count). End(xlUp).Offset(1) = rngCell End If Next Voor elke 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 

  • De bovenstaande macro is helemaal klaar om te worden uitgevoerd; ofwel kunnen we op de F5-toets drukken - als u zich momenteel in het Visual Basic Editor-scherm bevindt - of we kunnen de sneltoetsen "ALT + F8" gebruiken, uw macro selecteren en op de knop Uitvoeren klikken

  • De unieke lijst uit kolommen A & B wordt automatisch gegenereerd in kolommen C & D

Code Verklaring:

In de bovenstaande code gebruiken we de IF-functie samen met de For-lus om het resultaat te krijgen.

  • We verklaren Dim rngCell als bereik; het doel van het declareren van rngCell As Range is dat we het samplebereik "A2: A40" willen toewijzen met een specifieke naam, d.w.z. "rngCell" in ons voorbeeld
  • Voor elke rngCell binnen bereik ("A2:A40"); we zullen voor elke cel in "rngCell" controleren met een voorwaarde
  • If WorksheetFunction.CountIf(Bereik("B2:B40"), rngCell) = 0 Dan; deze coderegel gebruikt de AANTAL.ALS VBA-functie om het criteriumbereik B2: B40 te controleren met de criteria rngCell is gelijk aan nul, dan wordt in kolom C de waarde opgeslagen in rngCell opgeslagen
  • Op dezelfde manier zullen we For Each Loop voor kolom B uitvoeren en de unieke waarden in kolom D . extraheren

Conclusie: We kunnen de unieke lijst met tekst of waarden uit elke kolom halen; de kopnaam van de kolom C (Resultaten - Bestaat in Lijst 1 maar niet in Lijst 2) & kolom D (Resultaten - Bestaat in Lijst 2 maar niet in Lijst 1). Als we vergelijkbare vereisten hebben, maar het aantal kolommen is meer dan twee, dan moeten we de code aanpassen om het resultaat te krijgen.

Als je onze blogs leuk vond, deel deze dan met je vrienden op Facebook. En je kunt ons ook volgen op Twitter en Facebook.
We horen graag van je, laat ons weten hoe we ons werk kunnen verbeteren, aanvullen of vernieuwen en het voor jou beter kunnen maken. Schrijf ons op e-mailsite