Clever-Excel-Forum

Normale Version: VBA Doppelte Werte löschen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

einfache doppelte Werte anhand einer Spalte kann ich schon löschen. Ich benötige jetzt nur noch eine weitere Bedingung.
Aufbau der Tabelle. AuftragsNr/Status/Datum
Er soll jetzt, wenn Auftragsnummer gleich und der Status "erledigt" bei beiden ist, die Duplikate löschen. Alle anderen nicht.

Sub Loesche_DZeilen()
Dim temp
Dim i%, n%, ZSpalte%
Dim Zeilenzahl As Long
ZSpalte = 4 'F wird gezählt
   Zeilenzahl = Sheets(1).Cells(Rows.Count, ZSpalte).End(xlUp).Row
   For n = 2 To Zeilenzahl
       temp = Sheets(1).Cells(n, ZSpalte).Value
           For i = n To Zeilenzahl
               m = Sheets(1).Cells(i + 1, ZSpalte).Value
               Do While Sheets(1).Cells(i + 1, ZSpalte).Value = temp
                   Sheets(1).Cells(i + 1, ZSpalte).EntireRow.Delete
                   Zeilenzahl = Zeilenzahl - 1
               Loop
           Next i
   Next n
End Sub

Danke für eure Unterstützung
Hallöchen,

wenn Diene Tabelle nur 3 Spalten hat frage ich mich, warum Du in Deinem Makro die Spalte 4 verwendest Smile

Ansonsten im Prinzip so, Wenn Stautus in Spalte B (= 2) steht:
Do While Sheets(1).Cells(i + 1, ZSpalte).Value = temp and Sheets(1).Cells(i + 1, 2).Value = "erledigt"
Hallöchen,

meine Do - Codezeile ersetzt Deine Do - Codezeile.
Wenn Dien Code bisher mit einer Bedingung funktioniert hat, sollte es auch damit ohne Fehler gehen.


Allerdings wäre das Ergebnis wohl nicht ganz 100%ig.
Der Code löscht z.B. bei mehrfachen Auftragsnummern die erledigte auch wenn es zuvor eine ohne erledigt gibt.
Ist anders herum die erste erledigt und die zweite nicht, bleiben beide stehen. Da müsste man noch nachbessern.