Vergleichen Sie zwei Spalten in zwei Blättern

0

Ich habe eine andere Frage, obwohl die letzte, die ich gestellt habe, noch aussteht. Ich habe große Datenmengen von über 100.000 Datensätzen. Ich benutze den folgenden Code, um die Daten zu durchlaufen, so dass bei doppelten Datensätzen die Hintergrundfarbe rot wird. Der Code funktioniert einwandfrei, die Verarbeitung dauert jedoch derzeit viel zu lange (15-20 Minuten). Meine Frage ist: Kann ich irgendetwas tun, um den Prozess zu beschleunigen?

Der Code:

Dim wks As Worksheet, wrkb As Worksheet
Dim rng As Range, rngNew As Range
Dim intCount As Integer, intCount1 As Integer
Dim i As Integer, im As Integer

'Sheet1
Set wks = Worksheets("sheet1")
wks.Range("B2").Activate

'sheet2
Set wksb = Worksheets("sheet2")

' Return current data region.

Set rng = wks.Range("B1").CurrentRegion
Set rngNew = wksb.Range("B1").CurrentRegion

intCount = rng.Rows.Count
intCount1 = rngNew.Rows.Count

For i = 2 To intCount
            im = 2
    For im = 2 To intCount1

        If (rng.Cells(im, 2).Value = rngNew.Cells(i, 2).Value) Then

            rng.Cells(i, 2).Interior.ColorIndex = 3

    Exit For
        End If

    Next im
Next 

Danke für deine Hilfe

ondo
quelle

Antworten:

1

Anstatt VBA zum Durchlaufen der Daten zu verwenden, können Sie eine bedingte Formatierung verwenden, die die Zellen im Handumdrehen einfärbt.

VBA ist nicht die beste Lösung, nur weil es Code ist. Einige integrierte Excel-Funktionen sind wesentlich effizienter und schneller als jeder VBA-Code.

Beschreiben Sie das Layout der Arbeitsblätter und die Logik, die Sie auf Farbcodezellen anwenden möchten.

Dann kann eine bedingte Formatierung vorgeschlagen werden. Ich habe keine Zeit, Ihren VBA in einen Arbeitsmappenbereich umzuwandeln.

teylyn
quelle
Dank Teylyn, ich habe in der Vergangenheit die bedingte Formatierung verwendet, aber jetzt muss ich nach der Überprüfung des Berichts alle Duplikate aus der Tabelle löschen. Das ist der Grund für die Verwendung von Code und ich muss auch einige Verarbeitungsschritte auf dem Arbeitsblatt ausführen. Momentan muss dies in VBA erfolgen, bis ich die Daten später in der Zukunft auf Access verschiebe. Vielen Dank
ondo
1
Wie wäre es mit dem Befehl "Duplikate entfernen" in der Datenleiste?
teylyn
0

Eine Hilfsspalte in einem Ihrer Blätter sollte dies mit einem tun COUNTIF Formel zum Zählen der Anzahl der Einträge, die einer Bedingung im anderen Blatt entsprechen. Fügen Sie dann ein Bedingungsformat hinzu, das die Zellen rot färbt, wenn die Formel & gt; 0 zurückgibt.

Und was @teylyn über VBA sagt, ist ganz richtig - es ist zu vermeiden, wenn Sie es mit einer Funktion tun können.

benshepherd
quelle
Kann ich das Löschen der farbigen Zellen nach der Überprüfung automatisieren? wenn ja wie?
ondo
Sie könnten einen Filter verwenden, dann könnten Sie einfach alle Duplikate auswählen und löschen. Oder "Duplikate entfernen", wie @teylyn sagt.
benshepherd