545 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo zusammen,

ich habe eine sehr große Datenmenge in einer Excel-Datei. Ich hätte gerne das alle Zeilen ab Zeile 10 gelöscht werden, die in Spalte M ein Nein haben. Ich habe hierfür ein Makro aus dem Netz genommen, welches sehr langsam ist.

Kennt ihr einen guten Code?

Die Tabelle hat insgesamt 25 Spalten aber tausende von Zeilen.

Vielen Dank

4 Antworten

0 Punkte
Beantwortet von m-o Profi (18.1k Punkte)
Hallo,

es wäre hilfreich, wenn du mal dein vorhandenes Makro posten würdest. Sind in deinen Datensätzen nur Werte oder gibt es da z.B. auch Formeln?

Gruß

M.O.
0 Punkte
Beantwortet von
häufiges Problem mit langsamen Makros ist das das Screenupdating nicht ausgeschaltet wird, das verlangsamt die Laufzeit ungemein wenn ein Makro 100e Zeilen/Spalten nacheinander abarbeitet

Application.ScreenUpdating = False

und am ende des Makros mit True wieder aktivieren

aber sinnvoller wäre es in der Tat wenn du mal zeigst was dein Makro so macht
0 Punkte
Beantwortet von beverly_ Experte (1.6k Punkte)
Hi,

der schnellste Weg ist m.W. wenn du in einer Schleife von der 10. Zeile bis zur letzten belegten Zeile läufst und dabei prüfst, ob in Spalte M "Nein" steht - falls Ja, dann Zelle in Spalte A leeren (ich nehme an, Spalte A ist immer ausgefüllt?). Am Ende löschst du dann mittels SpecialCells(xlCellTypeBlanks) des Bereichs A10:Axxxx alle relevanten Zeilen.

Bis später, Karin
0 Punkte
Beantwortet von
Hallo

Sub Nein_Loeschen()
        With Worksheets(1)
         .Range("M9").AutoFilter Field:=1, Criteria1:="nein"
         .AutoFilter.Range.SpecialCells(xlCellTypeVisible).Delete Shift:=xlUp
        End With
 End Sub
...