Anzeige
Archiv - Navigation
1588to1592
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
Inhaltsverzeichnis

Viele Zeilen löschen wenn leer

Viele Zeilen löschen wenn leer
30.10.2017 16:33:28
Ben
Hallo zusammen,
ich will leere Zeilen (leer im definierten Bereich)löschen lassen. Ist das clever so zu lösen, oder soll ich lieber ausblenden?
Ihr seht ja 5000 ist sehr gross und es dauert ewig. Gibt es da eine schnellere, elegantere Lösung?
Option Explicit
Const von = 1, bis = 5000
Sub leere_Zellen_löschen()
Dim z&
For z = von To bis
If WorksheetFunction.Count(Range("C" & z & ":R" & z)) = 0 Then Rows(z).EntireRow.Delete
Next
End Sub
Danke für eure Hilfe!
Grus Ben

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

Betreff
Datum
Anwender
Anzeige
AW: Viele Zeilen löschen wenn leer
30.10.2017 16:38:46
Hajo_Zi
Hallo Ben,
schneller geht es, wenn nicht jede Zeile einzeln gelöscht wird.
Sub Leerzeilen_loeschen2()
'   alle Leerzeilen löschen
Dim LoI As Long
Dim RaZeile As Range
For LoI = 1 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
If Rows(LoI).SpecialCells(xlCellTypeBlanks).Count = ActiveSheet.UsedRange.SpecialCells( _
xlCellTypeLastCell).Column Then
If RaZeile Is Nothing Then
Set RaZeile = Rows(LoI)
Else
Set RaZeile = Union(RaZeile, Rows(LoI))
End If
End If
Next LoI
If Not RaZeile Is Nothing Then RaZeile.Delete
Set RaZeile = Nothing
End Sub


Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung. o.w.T."
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben, mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Beiträge von Werner, Luc, robert und folgende lese ich nicht.
Anzeige
AW: Viele Zeilen löschen wenn leer
30.10.2017 17:03:44
Ben
Hallo Hajo,
der Debugger springt an und markiert mir ...
If Rows(LoI).SpecialCells(xlCellTypeBlanks).Count = ActiveSheet.UsedRange.SpecialCells( _
xlCellTypeLastCell).Column Then
woran kann das liegen?
Gruss Ben
AW: Viele Zeilen löschen wenn leer
30.10.2017 17:08:09
Hajo_Zi
Hallo Ben,
Du solltest es in eine Zeile schreiben also den _ den das Forum eingefügt hat entfernen.
Wolltest Du nicht nur einen Bereich prüfen?
Gruß Hajo
AW: Viele Zeilen löschen wenn leer
31.10.2017 14:32:56
Niclaus
Hallo Hajo
Ich habe es versucht mit Deinem Makro Leerzeilen_loeschen2 - den _, den das Forum eingefügt hat, habe ich entfernt. Trotzdem kommt dann für die Zeile
If Rows(LoI).SpecialCells
die Fehlermeldung: Laufzeitfehler 1004. Keine Zellen gefunden.
Ich habe dann nach den zwei Dim folgende Zeile eingefügt:
On Error Resume Next
Nun passiert folgendes: Es werden mir alle Zeilen in der Tabelle gelöscht!
Und noch etwas seltsames: Wenn in meiner Tabelle eine Zeile gefüllte und leere Zellen enthält, werden mit dem Makro alle Zeilen entfernt ausser diejenigen, die gefüllte und leere Zellen enthalten. Als Beispiel gemäss Printscreen: Nach dem Makro-Start verbleiben nur die Zeilen 7, 18 und 21 mit den gelb markierten leeren Zellen. Alle andern sind gelöscht.
Mache ich da etwas falsch? Vielen Dank Niclaus
Userbild
Anzeige
AW: Viele Zeilen löschen wenn leer
31.10.2017 15:47:30
Hajo_Zi
Hochgeladene Bilder können zwar als solche in Excel importiert werden, sind jedoch bei der Lösung von Problemen nicht sehr hilfreich, da man die eigentlichen Daten nicht ohne große und zeitraubende Umwege direkt in die Tabelle übertragen kann.
Schau mal hier
Eine hochgeladene Arbeitsmappe erhöht die Wahrscheinlichkeit, dass Du eine Lösung für Dein Problem erhältst.
Erstelle folglich bitte eine Demomappe, aus der deine Aufgabenstellung klar erkennbar ist und lade diese hoch.
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, solltest du diese Daten anonymisieren bzw. pseudonymisieren.
Falls Du den Download des Forums nicht benutzen möchtest beachte bitte: von unsicheren Servern file-upload lade ich keine Datei herunter (lt. Einschätzung meines Virenprogramms)
Gruß Hajo
Anzeige
AW: Viele Zeilen löschen wenn leer
31.10.2017 17:06:58
Niclaus
Hallo Hajo
Ich habe Dein Makro etwas verändert. Jetzt macht es das, was ich gerne hätte: Alle Zeilen in einer Tabelle, die ganz leer sind, werden gelöscht.
Sub Leerzeilen_loeschen3()
Dim LoI As Long
Dim RaZeile As Range
Dim rc%, rb%
On Error Resume Next
For LoI = 1 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
rb = 0
rb = Rows(LoI).SpecialCells(xlCellTypeBlanks).Count
rc = Rows(LoI).SpecialCells(xlCellTypeLastCell).Column
If rb = rc Then
If RaZeile Is Nothing Then
Set RaZeile = Rows(LoI)
Else
Set RaZeile = Union(RaZeile, Rows(LoI))
End If
End If
Next LoI
If Not RaZeile Is Nothing Then RaZeile.Delete
Set RaZeile = Nothing
End Sub

Lange habe ich gebraucht, bis ich realisiert habe, dass rb zu Beginn der Schleife auf 0 gesetzt werden muss.
Vielen Dank. Niclaus
Anzeige
AW: Viele Zeilen löschen wenn leer
30.10.2017 17:06:12
Daniel
Hi
das löschen von Zeilen lässt sich auf zwei Wegen beschleunigen:
1. vor dem löschen die Liste so sortieren, dass alle zu löschenden Zeilen einen lückenlos zusammenhängenden Zellblock bilden, der in einem Schritt gelöscht werden kann
2. ab Excel 2007: zum löschen der Zeilen die Funktion DATEN - DATENTOOLS - DUPLIKATE ENTFERNEN nutzen
für beide Methoden ist es erforderlich, die zu löschenden Zeilen in einer Hilfsspalte mit einer Formel entsprechend zu kennzeichnen.
hier das Codebeispiel für die zweite Methode. Beachte jedoch, dass die erste Zeile eine Überschriftenzeile sein sollte, da diese logischer Weise stehen bleiben muss:
With ActiveSheet.UsedRange
With .Columns(.Columns.Count + 1)
.FormulaR1C1 = "=IF(Count(RC3:RC18)=0,0,Row())"
.Cells(1, 1).Value = 0
.EntireRow.RemoveDuplicates .column, xlno
.ClearContents
end with
End with
Gruß Daniel
Anzeige
AW: Viele Zeilen löschen wenn leer
30.10.2017 17:36:07
Ben
Hallo Daniel,
puh helf mir mal kurz...
Kannst du mir R1C1, sowie RC3:RC18 erklären?
Weiterhin habe ich in der Hilfsspalte "Z" nun ermitteln, welche Zeilen gelöscht werden sollen.
Markiert mit der Zahl "1". wo füge ich das in deinem Code hinzu?
Danke dir!
Gruss Ben.
AW: Viele Zeilen löschen wenn leer
30.10.2017 20:38:00
Daniel
HI
in der R1C1-Addressierungart steht das R für Row/Zeile und das C für Column/Spalte.
Danach folgt die jeweilige Zeilen- oder Spaltennummer.
R1C1 entspricht also einem $A$1 in normaler Addressierungsart
wenn nach dem R keine Zahl folgt, sondern direkt das C, dann bedeutet dies, dass der Zeilenbezug immer auf die gleiche Zeile geht, in welcher auch die Formel steht, dh es ist ein Relativer Zellbezug
das RC3:RC18 entspricht also dem Bezug: $C1:$R1 (hier C und R als Spaltenbuchstaben), wenn man die Formel in A1-Schreibweise in eine Zelle der 1. Zeile schreibt.
Für die Programmierung ist die R1C1-Schreibweise günstiger, weil mit ihr die Formeln bei relativen Zellbezügen immer gleich aussehen, egal in welche Zelle man sie schreibt.
in meinem Code werden alle Zeilen, die gelöscht werden sollen mit 0 markiert und alle die stehten bleiben müssen mit der aktuellen Zeilennummer. Dann kann man die Zeilen schnell und einfach mit dem Duplikate-Entfernen entfernen, da alles gelöscht wird was 0 ist (und weil eine Zeile mit 0 stehen bleiben wird, sorgt man dafür, dass das die Überschriftenzeile ist).
zu meinem Code muss man eigentlich nichts hinzufügen, der ist schon vollständig.
wenn du aber schon die Zeilen mit 1 markiert hatst, die gelöscht werden sollen, dann müsste man noch wissen, wie du die Zeilen markiert hast, die stehten bleiben sollen.
im Idealfall ist das ein Text wie z.B. "" oder "nicht löschen" (es darf nur keine Zahl sein)
wenn du das schon hast, sortierst du deine Liste nach der Hilfsspalte (kann man auch weglassen, aber dann geht das löschen schneller)
dann selektierst du in der Hilfsspalte alle Zellen mit Zahl über die Menüfunktion START - BEARBEITEN - SUCHEN UND AUSWÄHLEN - INHALTE - FORMELN (oder KONSTANTEN) - ZAHLEN.
dann löschst du diese Zellen mit der Option "ganze Zeilen"
das wäre dann das vorgehen nach meiner ersten Methode.
ich würde dir empfehlen, dass alles erstmal "zu Fuss" auszuprobieren, damit du auch genau weißt, was das Makro tun soll.
Wenn das mal steht, kannst du dir bei der erstellung des Makros vom Recorder helfen lassen.
Gruß Daniel
Anzeige
AW: Viele Zeilen löschen wenn leer
02.11.2017 11:56:27
Ben
Hallo Daniel,
danke schon mal für die ausführliche Erklärung.
Der Weg über sortieren und Zeilen löschen gefällt mir.
Das Suchen und Auswählen funktioniert bei mir allerdings nicht.
In der Hilfsspalte habe ich "1" (soll gelöscht werden) und "" (soll nicht gelöscht werden). Spaltenformat "Standard". Wenn ich nach Zahlen suche, findet Excel keine Zellen.
Muss der zu durchsuchende Bereich zuvor markiert werden?
Danke dir!
Gruss Ben
AW: Viele Zeilen löschen wenn leer
02.11.2017 12:42:52
Daniel
Ja, das Einschränken einer Selektion funktioniert nur, wenn du vorher die Spalte selektiert.
Excel muss ja wissen, in welchem Bereich du nach Zahlen suchst.
Außerdem musst du korrekt angeben, ob die Werte als Fixwerte vorliegen oder als Formeln.
Ebenso ist wichtig, dass du die Zeilen mit der Zahl 1 kennzeichnet und nicht mit dem Text "1"!
Ausprobieren kannst du das ganze über die Menüfunktion
Start - Bearbeiten - Suchen und Auswählen - Inhalte
Für die Umsetzung als Makro den Recorder mitlaufen lassen.
Gruß Daniel
Anzeige
AW: Viele Zeilen löschen wenn leer
02.11.2017 14:04:44
Ben
Hallo zusammen,
danke an alle, die mir geholfen haben in diesem Beitrag. Klappt super.
Ich habe Daniels Ansatz verwendet, da dieser sehr beginnerfreundlich ist ;-)
Gruss Ben

317 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige