Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeilen löschen, wenn die Zelle in Spalte A leer ..

Zeilen löschen, wenn die Zelle in Spalte A leer ..
30.09.2006 13:56:21
Selma
Hallo Leute,
wenn in Zellen in Spalte A nichts steht oder der Zelleninhalt keine Zahlen beinhaltet, dann sollen diese Zeilen gelöscht werden. Mein Arbeitsblatt hat ca. 35000 Zeilen.
Wie kann ich das per VBA machen?
Vielen Dank im Voraus...
Liebe Grüße
Selma
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen löschen, wenn die Zelle in SpA leer ..
30.09.2006 14:12:55
Daniel
Hallo
am besten machst du es auch in VBA so wie du es ohne VBA in Excel machen würdest:
- spalte A markieren
- Bearbeiten - Gehe zu - Inhalte - Nur Leerzellen
- Bearbeiten - Zellen löschen - Ganze Zeile
Wenn du dabei den Macro-Recorder mitlaufen lässt, weißt du auch, wie es in VBA geht.
Im Prinzip lässt sich das ganze auf eine Zeile verdichten:
Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Sollte es wegen der Datenmenge Speicherprobleme geben, kannst du die ganze Aktion ja in 10.000er-Blöcke oder so aufteilen.
Bei 35000 Zielen ist wahrscheinlich sogar die by-Hand-Methode schneller als eine Schleife, die jede Zelle prüft, ob sie leer ist und dann löscht.
Gruß, Daniel
Anzeige
AW: Zeilen löschen, wenn die Zelle in SpA leer ..
30.09.2006 14:42:09
Selma
Hallo Daniel,
die Leerzellen habe ich gelöscht. Ich weiß nicht wie ich jetzt die Zeilen löschen kann, wenn in Spalte A der Zellinhalt keine Zahlen hat.
Bitte um Hilfe...
Danke nochmal....
LG
SELMA
AW: Zeilen löschen, wenn die Zelle in SpA leer ..
30.09.2006 14:47:27
Daniel
Hallo,
wenn du die von mir beschriebene by-Hand-Methode ausführst, wirst du auch einen Weg finden, die mit Text gefüllten Zeilen zu löschen.
Makro-Rekroder mitlaufen lassen, und du weißt, wie du dein Makro ergänzen musst.
in diesem Fall sind dann eben 2 oder 3 Makro-Zeilen erforderlich, um die Daten zu bereinigen.
Gruß, Daniel
Anzeige
AW: Zeilen löschen, wenn die Zelle in Spalte A leer ..
30.09.2006 15:53:35
Jo
Hallo,
Versuchs doch mal damit
Hier ein Beispiel zum Löschen der Zeile, wenn die Zelle in Spalte A leer ist:

Sub ZeilenWeg()
Dim intCounter As Integer
For intCounter = UsedRange.Rows.Count To 1 Step -1
If IsEmpty(Range("A" & intCounter)) Then
Rows(intCounter).Delete
End If
Next intCounter
End Sub

Ist die Zelle in Spalte A nicht leer, sondern ergibt eine Formelabfrage als Ergebnis "", dann musst Du
If IsEmpty(Range("A" & intCounter)) Then
durch
If Range("A" & intCounter) = "" Then
ersetzen.
Gruß Jo
Anzeige
AW: Zeilen löschen, wenn die Zelle in Spalte A leer ..
30.09.2006 16:32:19
Bernd
Also, wenn ich das verwende, bekomme ich einen Laufzeitfehler 424 mit dem Kommentar, dass dafür ein Objekt erforderlich ist.
Woran liegt's?
Gruss
Bernd
AW: Zeilen löschen, wenn die Zelle in Spalte A lee
30.09.2006 17:39:24
Selma
Hallo Jo,
die Zeilen mit leerem Inhalt in Spalte A sind gelöscht.
Jetzt noch eine Frage:
In Spalte A ab Zeile 2 dürfen in Zellen nur Zahlen stehen.
Ist dies nicht der Fall, dann soll die Zeile gelöscht werden.
Wie mache ich das ?
Liebe Grüße
SELMA
Anzeige
AW: Zeilen löschen, wenn die Zelle in Spalte A lee
30.09.2006 17:56:43
Daniel
Hallo:
So

Sub Löschen()
On Error Resume Next
With Range("A2:A65000")
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
.SpecialCells(xlCellTypeConstants, 2).EntireRow.Delete
.SpecialCells(xlCellTypeFormulas, 2).EntireRow.Delete
End With
On Error GoTo 0
End Sub

Die erste zeile löscht Leerzeilen, die weite Löscht Konstante Texte, die dritte löscht die Zeilen, inden ein über Formeln ermittelter Text steht.
Die ON-Error -Anweisung ist erforderlich, da es sonst einen Fehler geben würde, falls ein Typ mal nicht vorkommt.
Läßt sich aber alles rausfinden, wenn man mal mit "gehe zu - Inhalte" rumprobiert und den Recorder mitlaufen lässt.
Gruß, Daniel
Anzeige
AW: Zeilen löschen, wenn die Zelle in Spalte A
30.09.2006 21:24:18
Daniel
Hallo
ich habe mal beide Versionen ausprobiert und auf Performance getestet (mit c.a. 20000 Zeilen).
Dabei ist mir folgendes aufgefallen:
- Damit die Schleife auch schnell arbeitet, muß der Bildschirm mit Application.Screenupdating = false ausgeschaltet werden. sonst wirds indiskutabel langsam.
- Die Geschwindigkeit in der Schleife ist allein davon abhängig, wieviele Daten gelöscht werden müssen. je mehr löschungen, um so langsamer
- Die Geschwindigkeit der "specialCells"-Methode ist im gegensatz dazu davon ahhängig, wie die zu löschenden Daten verteilt sind.
Sind die Daten stark vereinzelt, kann es sogar passieren, daß die Funktion versagt und alles gelöscht wird (ist mir bei 40000 Zeilen passiert).
Sind die Daten dagegen vorher nach zu löschenden und nicht zu löschenden sortiert worden, geht der Löschvorgang in extrem schnell (bei gleicher Datenmenge von 18000 Zeilen), diese Methode hat auch bei 40000 Zeilen funktioniert
Diesen unterschied sieht man am im Vergelich zwischen "Test gleichmäßig" und "Test geblockt"
Die schnelleste Methode währe daher:
-Sortieren
-Löschen mit specialcells
-ggf zurücksortieren
https://www.herber.de/bbs/user/37108.zip
Wer will kanns in dieser Datei mal ausprobieren:
1 in der Combobox Szenario auswählen und
2 per Button die Löschmethode auswählen
Die Laufzeit ab Start wird angezeigt
Gruß, Daniel
Anzeige
AW: Zeilen löschen, wenn die Zelle in Spalte A
03.10.2006 17:42:21
Selma
Super....
Vielen Dank...
LG
Selma
;

Forumthreads zu verwandten Themen

Anzeige
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

Zeilen in Excel löschen, wenn Zelle in Spalte A leer ist


Schritt-für-Schritt-Anleitung

Um in Excel Zeilen zu löschen, wenn die Zelle in Spalte A leer ist, kannst Du folgende Schritte ausführen:

  1. VBA-Editor öffnen:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Neues Modul erstellen:

    • Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Code eingeben:

    • Kopiere den folgenden Code in das Modul:
    Sub ZeilenWeg()
       Dim intCounter As Integer
       For intCounter = UsedRange.Rows.Count To 1 Step -1
           If IsEmpty(Range("A" & intCounter)) Then
               Rows(intCounter).Delete
           End If
       Next intCounter
    End Sub
  4. Makro ausführen:

    • Schließe den VBA-Editor und kehre zu Excel zurück.
    • Drücke ALT + F8, wähle ZeilenWeg aus der Liste und klicke auf Ausführen.

Dieser Code löscht alle Zeilen, in denen die Zelle in Spalte A leer ist.


Häufige Fehler und Lösungen

  • Laufzeitfehler 424:

    • Dieser Fehler tritt auf, wenn ein Objekt erforderlich ist. Überprüfe, ob Du den richtigen Arbeitsbereich ausgewählt hast.
  • Leere Zeilen am Ende lassen sich nicht löschen:

    • Wenn Excel leere Zeilen am Ende nicht löscht, kann es an unsichtbaren Zeichen liegen. Überprüfe die Zellen in Spalte A auf Leerzeichen oder unsichtbare Zeichen.

Alternative Methoden

Falls Du kein VBA verwenden möchtest, kannst Du auch die folgende Methode nutzen:

  1. Leere Zellen markieren:

    • Markiere die Spalte A.
    • Gehe zu Start > Suchen und Auswählen > Gehe zu Spezial.
    • Wähle Leerzellen und klicke auf OK.
  2. Zeilen löschen:

    • Rechtsklicke auf die markierten Zellen und wähle Löschen....
    • Wähle Ganze Zeile und klicke auf OK.

Diese Methode ist nützlich, um leere Zeilen ohne VBA zu entfernen.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du Zeilen in Excel löschen kannst:

  1. Zellen mit Text in Spalte A löschen:

    Wenn Du Zeilen löschen möchtest, in denen Spalte A Text enthält, kannst Du den folgenden Code verwenden:

    Sub Löschen()
       On Error Resume Next
       With Range("A2:A65000")
           .SpecialCells(xlCellTypeBlanks).EntireRow.Delete
           .SpecialCells(xlCellTypeConstants, 2).EntireRow.Delete
           .SpecialCells(xlCellTypeFormulas, 2).EntireRow.Delete
       End With
       On Error GoTo 0
    End Sub
  2. Leere Zellen und nicht-numerische Werte löschen:

    Wenn in Spalte A ab Zeile 2 nur Zahlen stehen dürfen, kannst Du folgendes Makro verwenden:

    Sub ZeilenMitTextLöschen()
       Dim intCounter As Long
       For intCounter = UsedRange.Rows.Count To 2 Step -1
           If Not IsNumeric(Range("A" & intCounter)) Then
               Rows(intCounter).Delete
           End If
       Next intCounter
    End Sub

Tipps für Profis

  • Performance verbessern:

    • Setze Application.ScreenUpdating = False zu Beginn Deines Makros und Application.ScreenUpdating = True am Ende, um die Ausführungsgeschwindigkeit zu erhöhen.
  • Daten sortieren:

    • Sortiere Deine Daten vor dem Löschen. Dies kann die Geschwindigkeit erhöhen, insbesondere wenn viele Daten entfernt werden müssen.
  • Makro-Rekorder nutzen:

    • Lass den Makro-Rekorder laufen, um zu sehen, wie bestimmte Aktionen in VBA umgesetzt werden. Dies ist hilfreich, um eigene Makros zu erstellen.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Spalten gleichzeitig prüfen?
Du kannst den Code anpassen, um mehrere Spalten zu überprüfen, indem Du zusätzliche Bedingungen hinzufügst.

2. Was mache ich, wenn ich eine Fehlermeldung bekomme?
Überprüfe den Code auf Tippfehler und stelle sicher, dass Du die richtige Auswahl getroffen hast. Eventuell musst Du auch die Methode anpassen, wenn Du mit einer großen Datenmenge arbeitest.

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