Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1136to1140
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

Löschen von Zeilen mit Makro

Löschen von Zeilen mit Makro
Zeilen
Hallo und guten Abend,
ich habe schon wegen dem Thema Zeilen löschen gesucht und bin fündig geworden, jedenfalls was das Löschen von leeren Zeilen angeht.
Nun möchte ich aus meiner Tabelle Zeilen löschen, die einen Wert nicht wiedergeben. Die Tabelle bezieht sich auf ein weiteres Tabellenblatt und eine Spalte gibt einen Wert wieder oder eben nicht. Die Spalte enthält also die Funktion =WENN(ISTZAHL(A6037);C6037;""). Die Zeilen mit den Zahlen will ich behalten und die Zellen ohne sollen gelöscht werden, da dort aber die Funktionen drinnen stehen funktioniert mein bisheriges Makro nicht.
Public Sub LeerzeilenLoeschen()
Application.ScreenUpdating = False
Range("B:B").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Application.ScreenUpdating = True
End Sub
Freue mich auf eure Hilfe.
Gruß Mirko

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Löschen von Zeilen mit Makro
13.02.2010 01:45:21
Zeilen
HI
xlcelltypeblanks wählt nur Zellen aus, die leer sind
da deine Zellen aber eine Formel enthalten, sind die nicht leer (auch wenn das Ergebnis der Leerstring ist)
du musst entweder die Formeln vorher mit Range("B:B").Formula = Range("B:B").Value elemineren, oder statt (xlcelltypeblanks) das her verwenden: (xlcelltypeformulas, 2)
gruß, Daniel
AW: Löschen von Zeilen mit Makro
Zeilen
Hallo Daniel,
war mir klar, Blanks muss ersetz werden, doch auf Formular bin ich nicht gekommen (obwohl logisch).
Habe an etwas wie Boolean True/False gedacht, habe aber auch keine Ahnung von VBA.
Der zweite Vorschlag geht, da es sich aber um 8760 Zeilen = 1 Jahr in Stunden handelt, wovon etwa 200 Zeilen mit Zahlen bestehen bleiben sollen, dauert es ziemlich lange die auf diese Weise zu selektieren.
Darum meine Frage geht das mit einem anderen Lösung schnellen? Werde nochmal versuchen zuerst die Formeln zu eleminieren und anschließend die leeren Zeilen löschen.
Ansonsten ist auch die erste Lösung befriediegend, vielen Dank dafür.
Gruß Mirko
Anzeige
AW: Löschen von Zeilen mit Makro
13.02.2010 11:18:24
Zeilen
HI
um das löschen zu beschleunigen, kannst du so vorgehen:
1. die Formel zum Kennzeichnen so aufbauen, daß zu löschende Zeilen mit einem Wahrheitswert und die restlichen mit einer Zahl gekennzeichnet werden
2. die Tabelle nach der Hilfsspalte sortieren, die zu löschenden Zeilen bilden jetzt einen zusammenhängenden Zellblock, was das Löschen beschleunigen
Innerhalb der beiden Blöcke bleibt die Reihenfolge erhalten.
3. jetzt die Zellen mit .SpecialCells(xlCelltypeFormulas, 4).EntireRow.Delete entfernen.
das interessante bei Excel ist, daß die geschwindigkeit beim Löschen von Zellen nicht von der Anzahl der Zellen abhängt, sondern von der Anzahl der zusammenhängenden Zellblöcke.
Durch das Sortieren reduziertst du diese Anzahl auf 1, und das Sortieren geht in Excel sehr schnell
wenn du dich in VBA nicht so auskennst, dann hilft dir oft der Makrorecorder, einfach die Aktion von Hand ausführen und den Recorder mitlaufen lassen.
der Code muss natürlich überarbeitet werden, aber du weißt, wie der Befehl funktioniert und welche Parameter wie gesetzt werden müssen.
Gruß Daniel
Anzeige
AW: Löschen von Zeilen mit Makro
13.02.2010 09:19:59
Zeilen
Hallo Mirko,

eine Möglichkeit.

Sub leereLoeschen()
  Dim rng As Range, rngDel As Range
  
  On Error Resume Next
  Set rng = Columns(2).SpecialCells(xlCellTypeFormulas)
  If Not rng Is Nothing Then
    rng.Replace What:="""""", Replacement:="NA()", LookAt:=xlPart
    Set rngDel = rng.SpecialCells(xlCellTypeFormulas, xlErrors)
    If Not rngDel Is Nothing Then rngDel.EntireRow.Delete
    rng.Replace What:="NA()", Replacement:="""""", LookAt:=xlPart
  End If
  On Error GoTo 0
  
  Set rngDel = Nothing
  Set rng = Nothing
End Sub

Gruß Sepp

Anzeige

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige