Excel VBA eine große Menge leere Zeilen löschen?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Vielleicht eine Alternative!?:

Kannst Du eine leere Zeile anhand einer bestimmten leeren Zelle definieren?
Dann einfach die Spalte dieser Zellen markieren (am besten bis zum letzten Eintrag)/ F5 (Gehe zu)/ Inhalte: Leerzellen/ OK/ Rechtsklick / Zellen löschen/ Ganze Zeile.
Falls es VBA sein muss, kannst Du das sicher auch über den Makrorekorder aufnehmen und umsetzen.

Woher ich das weiß:Berufserfahrung – IT-Administrator (i.R.)
PrimMay 
Fragesteller
 27.02.2017, 15:14

ich kann bereits löschen per makro, jedoch dauert es teilweise 10 Minuten wenn jede zeile einzeln angeguckt werden muss

0
Oubyi, UserMod Light  28.02.2017, 01:26
@PrimMay

Das sollte mit dieser Vorgehensweise in ein paar Sekunden klappen.
Bei nur 2800 Leerzeilen sogar unter 1 Sekunde.
Hast Du es mal ausprobiert?

0

Wenn jeweils viele leere Zeilen zusammenhängen, geht es vielleicht schneller, diese Gruppen zu ermitteln und einzeln zu löschen.

Möglicherweise geht es auch, die zu berücksichtigenden Zeilen zu kopieren (direkt in Excel geht das mit Strg+Klick), in ein neues Tabellenblatt einzufügen und das alte Tabellenblatt zu entfernen.

Kannst Du die Tabelle nicht mit VBA einfach sortieren, dass die leeren Zeilen am Ende stehen? Alternativ, wenn die ursprüngliche Reihenfolge relevant ist: Lfd. Nummer vergeben, Sortieren, Löschen ab der ersten leeren Zeile (also die Ermittlung der letzten Zeile wie Du schon verwendest auch für die Spalte lfd. Nummer) und wieder nach lfd. Nummer sortieren

PrimMay 
Fragesteller
 28.02.2017, 14:19

ich darf an der form der Tabelle nichts ändern, aber die Idee an sich ist gut danke dafür

 

0
Ninombre  28.02.2017, 16:59
@PrimMay

Stehen in der Tabelle auch Formeln, die durch das Makro ggf. ständig neu berechnet werden? Das könntest Du mit

Application.Calculation = xlCalculationManual  zu Beginn bzw.

Application.Calculation = xlCalculationAutomatic am Ende unterdrücken

0

Vielleicht beschleunigt die Find-Methode dein Script.

Sub ZeilenLoeschen()
Dim Zelle As Range
Dim LetzteZeile As Long

LetzteZeile = UsedRange.SpecialCells(xlCellTypeLastCell).Row
Range("C7:C" & LetzteZeile).Replace what:="", Replacement:=".", lookat:=xlWhole

Set Zelle = Range("C7:C" & LetzteZeile).Find(what:=".", lookat:=xlWhole)
While Not Zelle Is Nothing
Zelle.EntireRow.Delete xlUp
Set Zelle = Range("C7:C" & LetzteZeile).Find(what:=".", lookat:=xlWhole)
Wend
End Sub
Suboptimierer  27.02.2017, 14:53

PS: Schau dir mal den Autofilter an. Evtl. brauchst du dafür kein Makro.

http://praxistipps.chip.de/excel-leere-zeilen-loeschen-so-gehts_16749

1
PrimMay 
Fragesteller
 27.02.2017, 15:16
@Suboptimierer

die exceldatei muss automatisch ablaufen. Und dynamisch ablaufen, weil jeden Monat andere Dateien reinkommen

0
Suboptimierer  27.02.2017, 15:29
@PrimMay

Du könntest nach einem Weg suchen, das Makro automatisch einmal im Monat mitten in der Nacht zu starten. Dann würdest du dem Zeitproblem aus dem Weg gehen.

Mit geplanten Tasks ließe sich doch z. B. einiges bewerkstelligen.

0
PrimMay 
Fragesteller
 27.02.2017, 14:56

Danke, aber ist leider genauso langsam

0