AW: If Not Funktion
18.07.2017 18:00:49
Daniel
Hi
bei der genannten Datenmenge ist es nicht mehr sinnvoll, jede Zeile einzeln zu löschen.
Das dauert sehr lange, weil das Zeilenlöschen ein sehr komplexer Vorgang für Excel ist.
Auch das Löschen über den Autofilter würde nur dann eine zufriedenstellende Laufzeit erbringen, wenn du die Datei vor dem Löschen nach den Filterspalten sortierst, so dass die zu löschenden Zeilen möglichst lückenlos bei einander stehen.
ohne Umsortieren wäre wahrscheinlich folgendes die beste lösung:
1. markiere in einer Hilfsspalte per Formel alle Zellen, die gelöscht werden sollen mit 0 und alle Zeilen, die stehen bleiben müssen, mit der aktuellen Zeilennummer.
in deinem Fall wäre die Formel
=Wenn(Oder(A1="APO";A1="HST";C1=67760;C1=10108939);Zeile();0)
2. Schreibe in die Überschriftenzeile ebenfalls die 0
3. Wende auf die Ganze Tabelle die Funktion Daten - Datentools - Duplikate entfernen an, mit der Hilfsspalte als Kriterium und der Option "keine Überschrift"
4. lösche die Hilfsspalte
das ganze geht natürlich auch als Makro:
Sub löschen()
With ActiveSheet.UsedRange
With .Columns(.Columns.Count + 1)
.FormulaR1C1 = "=IF(Or(RC1=""APO"",RC1=""HST"",RC3=67760,RC3=10108939),Row(),0)"
.Cells(1, 1).Value = 0
.EntireRow.RemoveDuplicates .Column, xlNo
.ClearContents
End With
End With
End Sub
Gruß Daniel