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