am schnellsten sind oft Formelbasierte Lösungen
13.10.2009 22:31:36
Daniel
Hi
die schnellste Variante ist folgende, diese Variante funktioniert auch mit beliebigen Datenmengen und ist bei grossen Datenmengen auch von Hand schneller als die meisten Makros, die auf Schleifen basieren:
1. Daten nach der Spalte mit dem Vergleichskriterium sortieren (in diesem Fall Spalte b)
2. am Tabellenende folgende Formel eintragen (Formel ist geschrieben für die Zeile 2, da ich von einer Überschrift ausgehe: =Wenn(Oder(B1=B2;B2=B3);Zeile();"")
3.mit Kopieren - Inhalte einfügen - Werte die Formel fixieren
4. Datei nach der neuen Spalte sortieren.
5. in der neuen Spalte die leeren Zellen selektiern und dann die ganze Zeile löschen (geht über BEARBEITEN - GEHE ZU - INHALTE - LEERZELLEN, anschließend BEARBEITEN - ZELLEN LÖSCHEN - GANZE ZEILE)
als Makro sieht das ganze so aus:
Sub EinfacheLöschen()
Const b = 2 'hier die Spalte mit den Vergleichswerten eintragen
With ActiveSheet.UsedRange
.Sort Key1:=Cells(b, 2), order1:=xlAscending, header:=xlYes
With .Columns(.Columns.Count).Offset(1, 1).Resize(.Rows.Count - 1, 1)
.FormulaR1C1 = "=if(or(R[-1]C" & b & "=RC" & b & ",R[1]C" & b & "=RC" & b & "),Row(),""" _
")"
.Formula = .Value
.EntireRow.Sort Key1:=.Cells(1, 1), order1:=xlAscending, header:=xlNo
On Error Resume Next
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
On Error GoTo 0
.Delete
End With
End With
End Sub
Gruß, Daniel