Wie kann ich in Excel mehrere bestimmte Zeilen löschen?

Wie kann ich in Excel mehrere bestimmte Zeilen löschen?

Ich habe fünf Blätter in einem Dokument. Das erste Blatt enthält die Zeilen, die Werte in der ersten Spalte enthalten. Ich muss alle Zeilen aus den übrigen Blättern löschen, die in der ersten Spalte denselben Wert haben, der mit dem Wert der ersten Spalte des ersten Blatts übereinstimmt. Das Problem ist, dass es sich um viele Datensätze mit unterschiedlichen Spaltenwerten handelt, die gelöscht werden sollen. Wie kann ich einfach alle Zeilen durchsuchen, die die Werte des ersten Blatts enthalten (oder die mit dem ersten Blatt gemeinsam sind), und sie löschen?

Antwort1

Wenn Sie jeden Wert in Spalte A von Blatt1 durchgehen und diesen Wert zum Filtern der verbleibenden 4 Arbeitsblätter verwenden, sollten Sie die gewünschten Ergebnisse erhalten.

Sub remove_from_2_to_5()
    Dim var As Variant, w As Long, rw As Long

    With Sheets(1)
        For rw = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
            If Not IsEmpty(.Cells(rw, 1)) Then
                var = .Cells(rw, 1).Value
                For w = 2 To 5
                    With Sheets(w).Cells(1, 1).CurrentRegion
                        .AutoFilter
                        .AutoFilter field:=1, Criteria1:=var
                        With .Offset(1, 0).Resize(.Rows.Count, .Columns.Count)
                            If CBool(Application.Subtotal(103, .Columns(1))) Then
                                .SpecialCells(xlCellTypeVisible).EntireRow.Delete
                            End If
                        End With
                        .AutoFilter
                    End With
                Next w
            End If
        Next rw
    End With

End Sub

Während die erste For/Next-Schleife die Spalte A von Sheet1 durchläuft, zeichnet sie den gefundenen Wert auf. Dieser wird in jedem der verbleibenden Arbeitsblätter als Kriterium für eine .AutoFilterOperation verwendet. Wenn nach Anwenden des Filters noch Zellen angezeigt werden, werden die Zeilen gelöscht.

Antwort2

Fügen Sie in jedes Blatt eine Spalte ein, um zu prüfen, ob der Wert in der ersten Spalte im ersten Blatt vorkommt: =iferror(match(a2,sheet1!a:a,0)>0,false)
Sie gelangen truein die Zeilen, deren erste Spalte im ersten Blatt vorkommt, filtern nach ihnen und löschen sie.
Wenn Sie mehrere Blätter haben und eine noch schnellere Lösung benötigen, brauchen Sie ein Makro.

verwandte Informationen