AW: Mehrfach vorhandene Zellen löschen
12.04.2008 13:56:00
Daniel
Hallo Daniel (oder Karl-Heinz, bin grad etwas verwirrt)
das von dir hochgeladene Makro ist nicht von Volti, sondern von mir, deinem Namensvetter.
ich dachte, ich hätte schon beschrieben, wie ich die Daten lösche:
Sub test()
Dim z1 As Long, z2 As Long
z1 = ActiveSheet.UsedRange.Row
z2 = ActiveSheet.UsedRange.Rows.Count
Range("A:B").Insert
Cells(z1, 2).Resize(z2, 1).FormulaR1C1Local = "=ZS(1)&ZS(2)"
Cells(z1, 1).Resize(z2, 1).FormulaR1C1Local = "=WENN(ZÄHLENWENN(S(1);ZS(1))>1;WAHR;ZEILE())"
With Cells(z1, 1).Resize(z2, 2)
.Formula = .Value
.EntireRow.Sort key1:=Cells(z1, 1) '--- kann weggelassen werden, dann wirds bei grossen _
Tabellen langsamer
On Error Resume Next
.SpecialCells(xlCellTypeConstants, 4).select ' --- diese Zeile ist nur nur zur _
Verdeutlichung im Einzelstepmodus
.SpecialCells(xlCellTypeConstants, 4).EntireRow.Delete
On Error GoTo 0
.EntireColumn.Delete
End With
End Sub
lass mal diesen Code im Einzelstep-Modus durchlaufen, schau dir auch die eingefühgten Formeln an und du wirst verstehen was passiert:
ich füge eine Formel ein, die alle Zeilen, die gelöscht werden sollen, mit einem Wahrheitswert kennzeichnet.
Zellen, die einen Wahrheitswert enthalten, kann man über BEARBEITEN - GEHE ZU - INHALTE gezielt selektieren und dann löschen.
Ganz einfach.
Das Sortieren ist zwar nicht zwingened erforderlich, aber es beschleuinigt den Löschvorgang ungemein, wenn alle zu löschenden Zelllen direkt untereinander stehen.
dh. wenn du von 1000 Zeilen jede 2. Löschen willst, dann sind das für Excel immer 500 einzelne Löschaktionen.
sortierst du aber um, so daß du die Zeilen 1-500 löschen kannst, ist es nur eine Löschaktion.
Gruß, Daniel