Falls Sie sich fragen, wie Sie 2 Datenspalten mit Millionenzeilen vergleichen und die eindeutigen Werte zwischen beiden Spalten extrahieren können, sollten Sie diesen Artikel lesen. Wir werden VBA-Code verwenden, um zwei Datenspalten zu vergleichen und den Unterschied in den nächsten beiden Spalten anzuzeigen.
Frage: Es gibt mehrere Werte, die in den Spalten A und B vorhanden sind. Ich möchte, dass ein Makro mehr als 40 k Datenzeilen in beiden Spalten überprüft und dann die Liste der eindeutigen Einträge aus jeder Spalte in die nächste Spalte extrahiert, dh Spalten C & D bzw. In diesem Beispiel nehme ich nur 40 Zeilen mit Beispieldaten.
Sie finden die ursprüngliche Frage hier
Es folgt die Momentaufnahme der Daten:
Um die Liste der zwei Spalten zu vergleichen, müssen wir die folgenden Schritte ausführen, um den VB-Editor zu starten:
- Klicken Sie auf die Registerkarte Entwickler
- Wählen Sie aus der Gruppe Code die Option Visual Basic
- Kopieren Sie den folgenden Code in das Standardmodul
Sub PullUniques() Dim rngCell As Range For Each 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 Each 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
- Das obige Makro ist so eingestellt, dass es ausgeführt wird; entweder können wir die Taste F5 drücken - wenn Sie sich gerade im Visual Basic Editor-Bildschirm befinden - oder wir können die Tastenkombinationen "ALT + F8" verwenden, Ihr Makro auswählen und auf die Schaltfläche "Ausführen" klicken
- Die eindeutige Liste aus den Spalten A & B wird automatisch in den Spalten C & D generiert
Code-Erklärung:
Im obigen Code verwenden wir die IF-Funktion zusammen mit der For-Schleife, um das Ergebnis zu erhalten.
- Wir deklarieren Dim rngCell als Range; Der Zweck der Deklaration von rngCell als Range besteht darin, dass wir dem Sample-Bereich „A2:A40“ einen bestimmten Namen zuweisen möchten, z. B. „rngCell“ in unserem Beispiel
- Für jede rngCell In Range("A2:A40"); Wir prüfen jede Zelle in „rngCell“ mit einer Bedingung
- If WorksheetFunction.CountIf(Range("B2:B40"), rngCell) = 0 Then; Diese Codezeile verwendet die VBA-Funktion ZÄHLENWENN, um den Kriterienbereich B2: B40 zu überprüfen, wobei das Kriterium rngCell gleich Null ist, dann wird in Spalte C der in rngCell gespeicherte Wert gespeichert
- In ähnlicher Weise werden wir For Each Loop für Spalte B ausführen und die eindeutigen Werte in Spalte D extrahieren
Abschluss: Wir können die eindeutige Liste von Text oder Werten aus jeder Spalte abrufen; der Kopfzeilenname der Spalte C (Ergebnisse - existiert in Liste 1 aber nicht in Liste 2) & Spalte D (Ergebnisse - existiert in Liste 2 aber nicht in Liste 1). Falls wir ähnliche Anforderungen haben, aber die Anzahl der Spalten mehr als zwei beträgt, müssen wir den Code optimieren, um das Ergebnis zu erhalten.
Wenn Ihnen unsere Blogs gefallen haben, teilen Sie sie mit Ihren Freunden auf Facebook. Und Sie können uns auch auf Twitter und Facebook folgen.
Wir würden uns freuen, von Ihnen zu hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern, ergänzen oder erneuern und für Sie verbessern können. Schreiben Sie uns an E-Mail-Site