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

0

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

Shaonline
quelle
Kann man vernünftigerweise davon ausgehen, dass A1 in allen Arbeitsblättern eine Überschriften-Spaltenbezeichnung enthält, die in Ruhe gelassen werden sollte? In diesem Fall ist das Filtern nach jedem Wert in Spalte A von Sheet1 und das Löschen die beste Lösung.
Jeeped

Antworten:

0

Wenn Sie die verbleibenden 4 Arbeitsblätter nach jedem Wert in Spalte A von Sheet1 filtern, erhalten Sie die gewünschten Ergebnisse.

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. Dies wird in jedem der verbleibenden Arbeitsblätter als Kriterium in einer .AutoFilterOperation verwendet. Wenn Zellen angezeigt werden, nachdem der Filter angewendet wurde, werden die Zeilen gelöscht.

Jeeped
quelle
Dies löscht alle Datensätze von allen Blättern :(
Shaonline
@Shaonline - Während meiner Tests wurden nur die Daten gelöscht, die aus Spalte A in Tabelle 1 dupliziert wurden. Ich werde einige redigierte Daten auf mehreren Blättern sehen müssen, die die von Ihnen beschriebenen Aktionen reproduzieren.
Jeeped
0

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

Máté Juhász
quelle
Ich verwende jetzt die folgende Formel = iferror (match (a2, ti! A: a, 0)> 0, false) im Rest der Blätter, indem ich eine neue Spalte hinzufüge, aber es gibt mir true für alle Werte, auch für diejenigen, die dies tun nicht übereinstimmen. Ich ersetze sheet1 durch "ti", was der Name meines ersten Blattes ist. Was mache ich falsch?
Shaonline
Es ist seltsam, haben Sie automatische Berechnungen in Ihrer Arbeitsmappe aktiviert?
Máté Juhász
Ja, es ist ... muss ich es manuell drehen?
Shaonline
Das ist gut. Können Sie einige Beispieldaten posten? Es sollte gut funktionieren.
Máté Juhász
Wenn Sie Ihren Kommentar zur anderen Antwort lesen, scheint es, als ob etwas Ungewöhnliches an Ihren Daten ist, überprüfen Sie bitte, ob Sie Daten haben, die nicht gelöscht werden sollten!
Máté Juhász