Entfernen von Zeilen in einem Excel-Arbeitsblatt, wenn in einem anderen Arbeitsblatt Duplikate gefunden werden

Entfernen von Zeilen in einem Excel-Arbeitsblatt, wenn in einem anderen Arbeitsblatt Duplikate gefunden werden

Ich habe zwei Arbeitsblätter: „compiled“ und „firstpickup“. Ich möchte Zeilen im Blatt „firstpickup“ löschen, wenn der Wert in Spalte A auch in Spalte A von „compiled“ zu finden ist. „compiled“ hat 42.000 Zeilen und „firstpickup“ hat 21.000, daher möchte ich das Makro einfach ausführen und es beenden können, nachdem alle Daten durchgegangen sind.

Hier sind einige Optionen, die ich basierend auf oberflächlichen Google-Suchen ausprobiert habe:

 Sub RemoveDuplicates()
    Dim rCrit As Range 'Range To Search For Duplicates
    Dim rFilt As Range 'Range To Remove Duplicates
    Dim lLoop As Long

    Set rCrit = Worksheets("compiled").Range("A1", Worksheets("compiled").Range("A" & Rows.Count).End(xlUp))
    Set rFilt = Worksheets("firstpickup").Range("A1", Worksheets("firstpickup").Range("A" & Rows.Count).End(xlUp))

    For lLoop = rCrit.Rows.Count To 2 Step -1
        If WorksheetFunction.CountIf(rCrit, rFilt(lLoop).Value) > 0 Then
            Worksheets("firstpickup").Rows(lLoop).Delete shift:=xlUp
        End If
    Next lLoop
End Sub

Dieses Subprogramm hat in der „if“-Funktion immer keine Übereinstimmungen gefunden und deshalb nie Zeilen gelöscht, auch nicht die Zeilen, von denen ich wusste, dass sie Duplikate enthielten.

Sub Removeduplicates()

Dim Row As Long
Dim FoundDup As Range

Sheets("compiled").Select

For Row = Range("A24031").End(xlUp).Row To 2 Step -1

Set FoundDup = Sheets("compiled").Range("A:A").Find(Cells(Row, 1), LookIn:=xlValues, lookat:=xlWhole)

If Not FoundDup Is Nothing Then
    Cells(Row, 1).EntireRow.Delete
End If

Next Row

End Sub

Auch dieses Sub war nicht erfolgreich; nach der „For“-Abfrage sprang der Debugger zu „end sub“.

Ich wäre für jede Hilfe sehr dankbar, sei es eine Überarbeitung meiner vorherigen Versuche oder eine andere Lösung.

Antwort1

Sie können diesen VBA-Code verwenden, der Ihnen hilft, Zeilen aus dem Blatt zu löschen Firstpickup,wenn Werte in Spalte A mit Werten in Spalte A übereinstimmenvon Complied Sheet.

Sub DeleRows()
Dim LR As Long, i As Long
With Sheets("Firstpickup")
LR = .Range("A" & Rows.Count).End(xlUp).Row
For i = LR To 1 Step -1
    If IsNumeric(Application.Match(.Range("A" & i).Value, Sheets("Complied").Columns("A"), 0)) Then .Rows(i).Delete
Next i
End With
End Sub

verwandte Informationen