Bestimmte Zeilen auf einmal löschen!

Hallo!

Ein Problem, das mich nun schon länger beschäftigt:

Ich arbeite öfters mit Excel 2003-Dateien mit mehreren zehntausend Zeilen. Nun müssen da oft bestimmte Zeilen gelöscht werden, z.b. alle, die in Spalte „D“ den Wert „0“ haben, oder alle Zeilen, wo der Wert in Spalte „D“ größer als 5.000,00 ist und so weiter.

Bis jetzt hab ich die Tabelle halt immer sortiert, und dann die ganzen Zeilen manuell markiert und dann gelöscht - aber das muss doch einfacher gehen! Kann ich das irgendwie einfacher machen oder automatisieren?

Vielen Dank!

Ich arbeite öfters mit Excel 2003-Dateien mit mehreren
zehntausend Zeilen. Nun müssen da oft bestimmte Zeilen
gelöscht werden, z.b. alle, die in Spalte „D“ den Wert „0“
haben, oder alle Zeilen, wo der Wert in Spalte „D“ größer als
5.000,00 ist und so weiter.

Hi Manuel,

Alt+F11, Einfügen–Modul, Code reinkopieren, Editor schließen.
Makro ausführen mit Alt-F8…

Sub tt()
Dim Zei As Long
For Zei = Range("D" & Rows.Count).End(xlUp).Row To 1 Step -1
 If Cells(Zei, 4).Value = 0 Or Cells(Zei, 4).Value \> 5000 Then
 Cells(Zei, 4).EntireRow.Delete
 End If
Next Zei
End Sub

Gruß
Reinhard

Sub tt()
Dim Zei As Long
For Zei = Range(„D“ & Rows.Count).End(xlUp).Row To 1 Step -1
If Cells(Zei, 4).Value = 0 Or Cells(Zei, 4).Value > 5000
Then
Cells(Zei, 4).EntireRow.Delete
End If
Next Zei
End Sub

Hallo !
Vielen Dank schonmal!
Nur noch paar Fragen, bin nämlich recht Excel-interessiert, nur mit Makros hab ichs net so :smile:

  • Wenn der gesuchte Wert in Spalte „B“ ist, muss ich dann Range(„B“…) und Cells(Zei, 2) eingeben ?
  • Welche Bedeutung hat das „to 1 step -1“?
  • Bezeichnet TT() den Namen des makros, kann ich da also schreiben was ich will?
  • ist das wiederholte „Zei“ eine variable, könnte ich das auch evtl. anders benennen?

Dankschön!

Hi Manuel,

  • Wenn der gesuchte Wert in Spalte „B“ ist, muss ich dann
    Range(„B“…) und Cells(Zei, 2) eingeben ?

ja.

  • Welche Bedeutung hat das „to 1 step -1“?

Wenn man Zeilen löscht oder einfügt geht man übliicherweise von unten nach oben vor. Ist einfacher zu programmieren.

Angenommen ich habe ein Makro was von oben nach unten läuft, also erst Zeile 1 überprüft, dann zeile 2 dann Zeile 3 usw und Zeile 8 erfüllt die Bedingungen daß sie gelöscht wird, so löscht dann das Makro Zeile 8, was bedeutet im nächsten Takt wird dann Zeile 9 überprüft. Das ist aber falsch, denn diese Zeile 9 war vorher Zeile 10 und wird somit nicht überprüft.

-Bezeichnet TT() den Namen des makros, kann ich da also
schreiben was ich will?

Ja, der Name ist beliebig, abgesehen von Einschränkungen wie z.B. kein Leerzeichen im Namen usw.

  • ist das wiederholte „Zei“ eine variable, könnte ich das auch
    evtl. anders benennen?

Ja, die gleichen Einsschränkungen wie bei „tt“. Ansonsten sind solche Namen völlig frei wählbar.

Gruß
Reinhard

1 „Gefällt mir“

Vielen Dank für deine ausführliche Auskunft. Du bist mir schon seit längerem als fleißiger Excel-Experte aufgefallen! Weiter so :smile:

Bis jetzt hab ich die Tabelle halt immer sortiert, und dann
die ganzen Zeilen manuell markiert und dann gelöscht - aber
das muss doch einfacher gehen! Kann ich das irgendwie
einfacher machen…

Hallo,
Du kannst doch links die Zeilennummer klicken und eine ganze Zeile markieren, die erste (oder letzte). Dann F8. Dann scrollen zum Ende und wieder Zeile markieren, dann sind auch alle dazwischen markiert. Dann loeschen, einmal fuer alle markierten Zeilen.
Geht auch fuer ein Feld von Zellen, oben links markieren, F8, unten rechts markieren.
Zuruecknehmen einer falschen Auswahl wieder mit F8.
Gruss Helmut