So entfernen Sie doppelte Zeilen basierend auf einigen Spalten

11

Ich habe eine Excel-Tabelle, die doppelte Zeilen enthält

Ich möchte eine Zeile entfernen, wenn die ACDEF-Spalten identisch sind (Ignoriere B bei der Berechnung von Duplikaten, entferne sie jedoch beim Entfernen einer Zeile)

Im Moment ignoriert es B sowohl beim Vergleich als auch beim Löschen.

user33949
quelle
Können Sie einen Screenshot mit einem Vorher und Nachher hinzufügen? Ich habe Mühe, mir
Dave
Doppelte Werte in den Spalten A, C, D, E, F führen also zu einer vollständigen Löschung der Zeile, wobei die erste Instanz des Duplikats beibehalten wird. Was passiert, wenn A1 mit A2, C2 mit C3 übereinstimmt? Wird Zeile 2 gelöscht?
Raystafarian

Antworten:

18

In Excel 2013

  1. Wählen Sie alle Daten aus
  2. Wählen Sie die Registerkarte Daten -> Duplikate entfernen
  3. Aktivieren Sie "Meine Spalten haben Überschriften", wenn Ihre Daten über Spaltenüberschriften verfügen.
  4. Deaktivieren Sie alle Spalten, die Sie NICHT zum Vergleich verwenden möchten
  5. drücke OK

Getan

user33949
quelle
Nein, dies sucht nach Zeilen, die anderen Zeilen ähnlich sind. Ich habe auch darüber nachgedacht, aber es ist eine Lösung für eine andere Frage :)
Garrulinae
@ Garrulinae Was sagst du, kannst du erklären, wie das nicht funktioniert? Es scheint die richtige Antwort auf die Frage von OP zu sein.
TheCrazyProgrammer
@TheCrazyProgrammer - Wenn ich mir das über 2 Jahre später anschaue, sehe ich, dass die Frage des OP " Ich möchte eine Zeile entfernen, wenn die ACDEF-Spalten gleich sind " auf zwei verschiedene Arten interpretiert werden kann. Ich habe gemeint, dass diese Spalten in dieser Zeile identisch sind . Bei dieser Antwort wird davon ausgegangen, dass die Werte in den Spalten dieser Zeile mit denen einer anderen Zeile übereinstimmen . Im Nachhinein scheint diese Annahme richtig zu sein, zumal sie als die richtige Antwort markiert wurde.
Garrulinae
@ Garrulinae Gotcha. Jetzt habe ich deine Antwort gesehen und verstanden. Nebenbei bemerkt, ich bin überrascht, dass die von OP (und mir) geforderte Funktionalität als einfache Schaltfläche in Excel vorhanden ist. Durch das Googeln erhalten Sie jedoch eine Reihe von Artikeln, in denen komplizierte Dinge behandelt werden, die mich für einen Moment an dieser Antwort zweifeln ließen.
TheCrazyProgrammer
@TheCrazyProgrammer, ich habe auch eine Randnotiz - ich habe gerade erst gemerkt, dass es das OP war, das diese Antwort gepostet hat! Es ist offensichtlich die richtige Antwort, aber es ist eine Schande, dass die Frage nicht klarer war.
Garrulinae
1

Wenn ich Sie in den Zeilen 1 und 2 richtig verstanden habe, möchten Sie eine Zeile 2 genau dann löschen, wenn A1 = A2, C1 = C2, D1 = D2, E1 = E2 und F1 = F2.

Das habe ich mir ausgedacht. Es könnte wahrscheinlich kürzer sein, aber es macht den Trick:

Sub DeleteDuplicate()
Dim current As String
ActiveSheet.Range("A1").Activate
Do While ActiveCell.Value <> ""
    current = ActiveCell.Address
    ActiveCell.Offset(1, 0).Activate
    Do While ActiveCell.Value <> ""
        If ((ActiveSheet.Range(current).Value = ActiveCell.Value) And (ActiveSheet.Range(current).Offset(0, 2).Value = ActiveCell.Offset(0, 2).Value) And (ActiveSheet.Range(current).Offset(0, 3).Value = ActiveCell.Offset(0, 3).Value) And (ActiveSheet.Range(current).Offset(0, 4).Value = ActiveCell.Offset(0, 4).Value) And (ActiveSheet.Range(current).Offset(0, 5).Value = ActiveCell.Offset(0, 5).Value)) Then
            ActiveSheet.Rows(ActiveCell.Row).Delete
        Else
        ActiveCell.Offset(1, 0).Activate
        End If
    Loop
    ActiveSheet.Range(current).Offset(1, 0).Activate
Loop
End Sub

Dies führt eine Schleife durch alle verbleibenden Zeilen aus, wobei ActiveCell als Zeiger auf die auszuwertende Zeile verwendet und die "ursprüngliche" Zeilenzelle in der aktuellen Variablen gespeichert wird. Sobald die Schleife endet, wird die Zelle unter dem Strom aktiviert und die innere Auswerteschleife beginnt erneut.

Wenn ich es irgendwo vermasselt habe, zögere nicht, es mir zu sagen :)

kenkh
quelle
1

Fügen Sie diese Formel in jede Zeile ein, z. In Spalte G:

=IF(AND(A2=C2,A2=D2,A2=E2,A2=F2),"DELETE ME","")

Dies ergibt ein Ergebnis wie:

A   B   C   D   D   F   G
-   -   -   -   -   -   -
x   o   x   x   x   x   DELETE ME
x   x   x   x   x   o   
x   x   x   x   x   x   DELETE ME
x   o   o   x   x   x   

Erstellen Sie dann in Spalte G einen Filter für Zeilen mit der Aufschrift 'DELETE ME' und löschen Sie diese.

Garrulinae
quelle
0

@ Garrulinae

Ich habe Ihre Idee als Inspiration genommen. Ich hatte viele Zeilen und wollte nur die Zeilen löschen, die doppelte Werte einer Spalte enthielten. Wenn ich Duplikate über dieser Spalte entfernen verwende, werden nur Daten aus dieser Spalte und nicht die gesamte Zeile entfernt. Ich wollte jede 2. und 3. Zeile aus der gesamten Tabelle löschen. Also, was ich getan habe, habe ich eine neue Spalte erstellt und den Wert der ersten Zeile leer gelassen. Lösche mich in der zweiten und dritten Zeile. Und dann habe ich nur die Werte der ersten drei Zeilen dieser bestimmten Spalte (nicht der gesamten Zeile) kopiert und über die gesamte Spalte der Tabelle eingefügt. Jetzt musste ich mich in jeder 2. und 3. Zeile der gesamten Spalte "löschen". Dann muss ich nur noch die Werte dieser Spalte sortieren und alle Zeilen löschen, die delete me enthalten. Sie können dieselbe Lösung verwenden, wenn Sie jeden zweiten, dritten und vierten oder zweiten, dritten, vierten und fünften oder so weiter löschen möchten ...

Hoffe es hilft jemandem ....

Sunil
quelle
2
Ich verstehe nicht ganz, was du sagst. Anstatt zu beschreiben, was Sie getan haben, können Sie uns zeigen , welche Formel (n) Sie verwendet haben, und einige Beispieldaten präsentieren und zeigen, wie Ihre Antwort auf diese Daten funktioniert?
Scott