Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
504to508
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
504to508
504to508
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

leere Zeilen löschen

leere Zeilen löschen
21.10.2004 21:39:03
matze
Hallo zusammen,
ich habe in diesem Forum zwar schon einiges über das löschen leerer Zellen(Zeilen gefunden, aber leider hilft mir keiner der bisherigen Tipps.
Meine Tabelle ist eine Artikeltabelle, die sich die Daten aus mehreren Tabellen holt. Da die Tabelle täglich aktualisiert wird und der Artikelstamm schwankt, kann es sein, das heute 500, morgen 700 (übertreib ;-)) Artikel vorhanden sind.
Die Zellen sind bis ca. 1500 mit Formeln belegt, wobei die Tabelle dann in den ersten Zeilen die Artikel anzeigt, die restlichen bleiben leer (steht nur die Formel drin, die aber nichts anzeigt, weil heut mal nur 700 Artikel vorhanden sind. Es bleiben dann also die Zeilen 701 - 1500 leer.
Die Tabelle exportiere ich in eine csv Datei, allerdings stören hierbei die leeren Zeilen.
Ich benötige ein Makro, welches ab der ersten leeren Zeile bis zum Ende alle Zeilen löscht, so daß keine Formeln mehr drin stehen.
Geht so etwas...ich denke schon, ich habe soetwas bereits für alle Zellen gesehen, das breingt mir aber nichts, da ich zwischendurch auch mal leere Zellen habe, die aber bleiben müssen, nur wenn die ganze Zeile, bzw, die Spalte A leer ist, soll die ganze Zeile gelöscht werden.
Ich hoffe man kann mich verstehen...
Danke!

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: leere Zeilen löschen
PeterW
Hallo Matze,
das könnte so aussehen für Spalte A:

Sub LeereLoeschen()
Dim LgRow As Long
For LgRow = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
If Cells(LgRow, 1) = 0 Then Rows(LgRow).Delete
Next
End Sub

Gruß
Peter
AW: leere Zeilen löschen
ransi
hallo
versuch mal so:
Public

Sub weg()
Dim zeile As Long
For zeile = UsedRange.Rows.Count To 1 Step -1
If WorksheetFunction.CountA(Rows(zeile)) = 0 Then Rows(zeile).Delete
Next
End Sub

ransi
AW: leere Zeilen löschen
21.10.2004 22:23:07
Matze
mit einem
If WorksheetFunction.CountA(Rows(zeile)) = "" Then Rows(zeile).Delete
statt
If WorksheetFunction.CountA(Rows(zeile)) = 0 Then Rows(zeile).Delete
funktioniert es, aber es dauert ewig...
Anzeige
AW: leere Zeilen löschen
21.10.2004 22:20:57
Matze
An PeterW: damit bekomme ich einen Laufzeitfehler
An ransi: da tut sich leider gar nichts, die Formeln bleiben erhalten.
HELP
AW: leere Zeilen löschen
ransi
hatte dich falsch verstanden, sorry
Public

Sub weg()
Dim zeile As Long
For zeile = UsedRange.Rows.Count To 1 Step -1
If WorksheetFunction.CountBlank(Rows(zeile)) = 256 Then Rows(zeile).Delete
Next
End Sub

ransi
AW: leere Zeilen löschen
22.10.2004 08:36:42
Matze
Mit diesem Code bekomme ich einen Laufzeitfehler 424 und die Meldung Objekt erforderlich
AW: leere Zeilen löschen
PeterW
Hallo Matze,
wenn du nicht erwähnst welchen Fehler der Code verursacht hab ich keine Möglichkeit, ihn anzupassen oder dir Hinweise zu geben, welches Detail der Aufgabenstellung du nicht erwähnt hast. (Wie fast immer hab ich den Code getestet.)
Gruß
Peter
Anzeige
AW: leere Zeilen löschen
22.10.2004 08:40:16
Matze
Der Code funktioniert, war mein Fehler, allerdings musste ich die IfCells...=0 in ="" ersetzen, siehe:
Dim LgRow As Long
For LgRow = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
If Cells(LgRow, 1) = "" Then Rows(LgRow).Delete
Next
Wenn ich den Code richtig deute, löscht er vom Ende des Arbeitsblatts alle Zeilen bis er nach oben laufend die erste findet, oder?
Leider dauert das ewig. Kann man nicht mit der Zeile 1500 beginnen, die Zeilen danach sind eh leer..
Merci
AW: leere Zeilen löschen
PeterW
Hallo Matze,
der Code findet mit Cells(Rows.Count, 1).End(xlUp).Row die letzte belegte Zeile in Spalte 1. Schalte mal die Bildschirmaktualisierung aus (am Anfang des Codes Application.ScreenUpdating = False und am Ende Application.ScreenUpdating = True).
Gruß
Peter
Anzeige
funktioniert aber dauert
22.10.2004 11:18:48
matze
Hallo,
auf jedenfall schon einmal Danke für den Code, er funktioniert einwandfrei,
der Haken ist, es Dauert ziemlich lange, da bin ich von Hand schneller?
Kann es Sein, dass alle Zeilen bis 65535 gelöscht werden?
Mir würde reichen, wenn er bis 1500 löscht, kann man das als Abbruchbedingung einführen?
Merci
AW: funktioniert aber dauert
PeterW
Hallo Matze,
möglicherweise werden durch das Löschen Berechnungen ausgelöst (Summe, Anzahl, Zählenwenn..). Schalte die Berechnungen mal auf manuell

Sub ZeilenWeg()
Dim LgRow As Long
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
For LgRow = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
If Cells(LgRow, 1) = "" Then Rows(LgRow).Delete
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub

In meiner Testdatei läuft der Code in unter einer Sekunde durch. Und nein, es werden nur die Zeilen ab der letzten gefüllten in Spalte A berücksichtigt. Wenn du das nicht glauben willst setze mal einen Haltepunkt in der Löschzeile (If Cells(LgRow, 1) = "" Then Rows(LgRow).Delete) und schau dir die Variable lgRow an.
Gruß
Peter
Anzeige
AW: funktioniert aber dauert
22.10.2004 12:51:51
Matze
Ja danke, dauert jetzt nur noch ca. 10 Sekunden,
damit kann ich leben.
Vielen Dank!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige