Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Leerzeilen löschen

Leerzeilen löschen
12.01.2005 14:45:05
Ernst
Hallo Forum,
Ich habe mir ein Excel sheet gebaut mit dem ich mit SVERWEIS aus anderen Dateien Daten importiere.
Zu diesem Zweck hab ich mir (um genügend Platz zu haben) ca. 2000 Zeilen freigehalten bevor ich einen Abschluss mache.
Werden allerdings jetzt nur ca. 100 Daten importiert bleiben mir 1900 Zeilen frei.
Wie kann ich diese komfortabel löschen?
Optimale Zeilenbreite, Zeilenhöhe und Inhalt einfügen mache ich schon ueber ein Makro(aufgezeichnet)
Vielen Dank fuer eure Hilfe
Gruesse
Ernst
Anzeige

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Leerzeilen löschen
Galenzo
Hallo,
manuell so:
Spalte mit den Leerzellen markieren
F5/Inhalte/Leerzellen
STRG+MINUS / ganze Zeile löschen
Als Makro:
Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Viel Erfolg!
AW: Leerzeilen löschen
13.01.2005 10:00:45
Ernst
Hallo Galenzo,
Danke das funtioniert auch - allerdings nur bei komplett leeren Zeilen.
Mein Suchkriterium sollte die Spalte A sein.
Wenn in Spalte A17:A2097 nichts drinnen steht, dann soll die komplette Zeile gelöscht werden - auch wenn in Spalte F oder J was drinnen steht.
Gibt es hier einen speziellen Befehl oder kann man das nur mit einen Schleife realisieren ?
Vielen Dank fuer Deine Hilfe
Gruss
Ernst
Anzeige
AW: Leerzeilen löschen ohne Schleife
Martin
Hallo Ernst,
eine Schleife ist unnötig und von der Performance her schlecht. Zeichnet man den manuellen Weg auf, bekommt man folgenden Code:

Sub Leerzeilen_weg()
Range("A17:A2097").Select
Selection.SpecialCells(xlCellTypeBlanks).Select
Selection.EntireRow.Delete
End Sub

Das noch ein bißchen zusammengefaßt ergibt dann:

Sub Leerzeilen_weg2()
Range("A17:A2097").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

Gruß
Martin Beck
Anzeige
AW: Leerzeilen löschen ohne Schleife
13.01.2005 15:38:34
ernst
Hallo Martin,
Danke fuer Deine Hilfe
aber da krieg' ich Laufzeitfehler '1004'
An was kanns liegen?
Danke
Ernst
AW: Leerzeilen löschen ohne Schleife
Martin
Hallo Ernst,
1004 mit der Meldung "Keine Zellen gefunden"? Dann hast Du eben im Bereich A17:A2097 keine leeren Zellen.
Gruß
Martin Beck
AW: Leerzeilen löschen
wolfgang
Nehmen wir mal an, Du Spalte A ist Deine Refernz, d.h. in Zeile 210 ist der letzte Eintrag und alles, was darunter liegt (in Spalte B,C, u.s.w.) soll gelöscht werden.
Dann probier's mal damit:

Sub RestLoeschen()
Range("A1").Select
Selection.End(xlDown).Select
Range("A15").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.ClearContents
Range("A1").Select
End Sub

Anzeige
AW: Leerzeilen löschen
12.01.2005 15:39:27
Ernst
Hallo Galenzo,
Hallo Wolfgang,
Danke für eure Hilfe
Leider funktioniert's noch nicht ganz so einwandfrei.
Gelöscht werden sollen alle Zeilen von Zeile 17 bis 2097 wo in der Spalte A nichts drinnen steht. (Obwohl Inhalt in D und E und .. möglicherweise stehen koennen)
Danke nochmals im Voraus
Gruss
Ernst
Anzeige
AW: Leerzeilen löschen
Galenzo
markierst du A17 bis A2097 und rufst mein Makro auf
cells(zeile,1).EntireRow.Delete
ransi
hallo ernst
verrsuchs mal so:
Public

Sub leere_weg()
Dim zeile As Integer
For zeile = 2097 To 17 Step -1
If Cells(zeile, 1) = "" Then Cells(zeile, 1).EntireRow.Delete
Next
End Sub

ransi
Anzeige
AW: cells(zeile,1).EntireRow.Delete
13.01.2005 08:57:10
ernst
Hallo ransi,
Toll!
Funktioniert genau so wie ich's wollte !!!
allerdings ´kriegt man fast einen Augenkoller weil der Bildschrim flimmert wie verrueckt.
Ich hab' da noch ne' Frage
Kann man anstatt Leerzeilen zu loeschen mit einem Makro auch den benötigten Platz reservieren lassen?
Die Anzahl der benötigten Zeilen ist die Anzahl der ausgefüllten Zellen in Spalte A in einer anderen Datei aus der die Daten importiert werden)
Vielen Dank nochmals !!!!!!!
Gruss
Ernst
Anzeige
AW: cells(zeile,1).EntireRow.Delete
WernerB.
Hallo Ernst,
zu Frage 1:

Sub leere_weg()
Dim zeile As Integer
Application.ScreenUpdating = False
For zeile = 2097 To 17 Step -1
If Cells(zeile, 1) = "" Then Cells(zeile, 1).EntireRow.Delete
Next zeile
Application.ScreenUpdating = True
End Sub

Zu Frage 2 kann ich Dir leider keine Lösung anbieten (ich habe sie - ehrlich gesagt - auch nicht verstanden).
Gruß
WernerB.
Anzeige
Zeilen reservieren
Martin
Hallo Ernst,
nehmen wir mal an, die Daten kommen aus Datei "test" und stehen dort in "Tabelle1" in Spalte A, und zwar durchgängig von Zeile 1 bis Zeile z. z ist variabel und soll bestimmt werden.
Folgendes Makro reserviert n Zeilen ab Zeile 17:

Sub reservieren()
z = Workbooks("test").Worksheets("Tabelle1").Range("A65536").End(xlUp).Row - 1
Range("A17:A" & 17 + z).EntireRow.Insert
End Sub

Beim Aufruf des Makros muß die Tabelle aktiviert sein, in der die Zeilen eingefügt werden sollen.
Gruß
Martin Beck
Anzeige
AW: Leerzeilen löschen
13.01.2005 18:21:42
ernst
Hallo zusammen,
Ich hab von allen schon sehr hilfreiche Tips bekommen, aber so ganz komm ich noch nicht zurecht.
Makros mit Schleife dauern ganz schon lange um Leerzeilen im Range A17:A2097 zu suchen und zu löschen (ca. 4min), und mit
Range("A17:A2097").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
hab ich Probleme weil die Zelle obwohl nichts drinnen steht wahrscheinlich nicht als leer erkannt wird.
Ich hab mir gedacht wenn ich die Zelle z.B. A156 markiere und danach alle Zeilen bis A2097 löschen könnte wär's wohl schneller.
Aber wie mach ich das mit einem Makro?
Welchen Namen im Befehl Range hat die markierte Zelle?
Wie markier ich einen Bereich von meiner aktiven Zelle bis zur Zeile 2097 ?
und dann alles darin löschen und Zeilen nach oben schieben?
Vielen Dank nochmals fuer Hilfe
Ernst
Anzeige
AW: Leerzeilen löschen
bernd
hallo ernst
Range(ActiveCell.Row & ":2097").Delete 'löscht die zeilen
Range(ActiveCell.Row & ":2097").ClearContents 'löscht die inhalte
bernd
AW: Leerzeilen löschen
14.01.2005 10:00:08
ernst
Hallo Bernd,
Hallo Martin,
Danke für eure Hilfe!!
Martin: Das funktioniert bei meinen Aufbau leider nicht weil ich die Dateien ja nicht mit einen MAKRO importiere, sondern mit SVERWEIS und Verknüpfungen aktualisieren.
D.h. Zuerst importieren und dann Zeilen mittels Makro reservieren geht ja nicht.
Ich muesste beim öffnen der Datei das Makro ja bereits ausführen um Zeilen zu reservieren, und danach die Formeln mit SVERWEIS in die reservierten Zeilen reinkopiert bekommen.
Aber das ist fuer mich als VBA-Dummi ein längerer Weg.
Die kurzfristige Hilfe mit einem schnellen Löschen der Leerzeilen langt mir vorerst.
Vielen Dank nochmals an alle fuer eure Hilfe !!!!!!!!!
Gruss
Ernst
Anzeige
AW: Leerzeilen löschen
Martin
Hallo Ernst,
wieso reservierst Du nicht einfach nur die benötigten Zeilen? Wie das geht, habe ich ja schon gepostet, Du hast leider nicht darauf reagiert.
Gruß
Martin Beck
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Leere Zeilen in Excel komfortabel löschen


Schritt-für-Schritt-Anleitung

Um leere Zeilen in Excel mit VBA einfach zu löschen, kannst du folgende Schritte befolgen:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code ein, um alle leeren Zeilen in einem bestimmten Bereich zu löschen:

    Sub Leerzeilen_weg()
       Range("A17:A2097").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro aus, indem du ALT + F8 drückst, das Makro auswählst und auf Ausführen klickst.

Dieser Code löscht alle Zeilen von A17 bis A2097, in denen die Zellen in Spalte A leer sind, selbst wenn in anderen Spalten Inhalte vorhanden sind.


Häufige Fehler und Lösungen

  • Laufzeitfehler '1004': Dieser Fehler tritt auf, wenn keine leeren Zellen im angegebenen Bereich vorhanden sind. Überprüfe, ob der Bereich tatsächlich leere Zellen enthält.

  • Leere Zeilen am Ende lassen sich nicht löschen: Manchmal werden am Ende der Tabelle leere Zeilen nicht erkannt. Du kannst dies umgehen, indem du den Bereich manuell anpasst oder den gesamten Bereich auswählst.


Alternative Methoden

Falls du lieber ohne VBA arbeiten möchtest, kannst du die folgenden manuellen Methoden nutzen:

  1. Manuelles Löschen:

    • Markiere den Bereich (z.B. A17:A2097).
    • Drücke F5, wähle Inhalte und dann Leerzellen.
    • Drücke STRG + MINUS, um die leeren Zeilen zu löschen.
  2. Filter verwenden:

    • Setze einen Autofilter auf die Spalte.
    • Filtere nach leeren Zellen und lösche die angezeigten Zeilen.

Praktische Beispiele

  1. Excel Makro zum Löschen leerer Zeilen:

    Sub leere_weg()
       Dim zeile As Integer
       For zeile = 2097 To 17 Step -1
           If Cells(zeile, 1) = "" Then Cells(zeile, 1).EntireRow.Delete
       Next zeile
    End Sub

    Dieses Makro durchläuft die Zeilen von unten nach oben und löscht alle Zeilen, in denen in Spalte A nichts steht.

  2. Leere Zeilen entfernen in einer Tabelle: Wenn du eine Excel-Tabelle hast, kannst du ebenfalls das folgende Makro verwenden, um alle leeren Zeilen zu löschen:

    Sub Alle_leeren_zeilen_loeschen()
       Dim tbl As ListObject
       Set tbl = ThisWorkbook.Worksheets("Tabelle1").ListObjects(1)
       tbl.Range.AutoFilter Field:=1, Criteria1:=""
       tbl.DataBodyRange.SpecialCells(xlCellTypeVisible).EntireRow.Delete
       tbl.AutoFilter.ShowAllData
    End Sub

Tipps für Profis

  • ScreenUpdating deaktivieren: Um das Flimmern des Bildschirms zu vermeiden und die Ausführung zu beschleunigen, füge am Anfang deines Makros Application.ScreenUpdating = False und am Ende Application.ScreenUpdating = True hinzu.

  • Fehlerbehandlung einfügen: Um Laufzeitfehler zu vermeiden, kannst du eine Fehlerbehandlung in dein Makro integrieren.


FAQ: Häufige Fragen

1. Wie kann ich leere Zeilen im gesamten Arbeitsblatt löschen? Du kannst den folgenden Code verwenden, um alle leeren Zeilen im gesamten Arbeitsblatt zu löschen:

Sub Alle_leeren_zeilen_loeschen()
    Cells.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

2. Was tun, wenn die leeren Zellen nicht erkannt werden? Manchmal enthalten die Zellen unsichtbare Zeichen. Stelle sicher, dass die Zellen wirklich leer sind, indem du sie manuell überprüfst oder den Inhalt bereinigst.

3. Kann ich leere Zeilen mit einem Shortcut löschen? Leider gibt es keinen direkten Shortcut, um leere Zeilen zu löschen. Du kannst jedoch ein Makro aufzeichnen und diesem Makro einen Shortcut zuweisen, um den Prozess zu beschleunigen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige