Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
388to392
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
388to392
388to392
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zeilen aus Liste löschen

Zeilen aus Liste löschen
27.02.2004 09:13:27
Christoph Dümmen
Hallo,
In einer Tabelle mit 60.000 Zeilen will ich alle Zeilen löschen, welche in Spalte 12 ein Null haben.
Zur Zeit mache ich das per Schleife, was auch geht, aber laaaaaaaange dauert.
Gibt es einen schnelleren Weg?
Christoph

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen aus Liste löschen
27.02.2004 09:17:05
AndreasS
Hi,
wie sieht denn dein Makro aus?
Gruß Andreas
AW: Zeilen aus Liste löschen
27.02.2004 09:34:38
Christoph Dümmen
Hallo Andreas
ich hab mal den relevanten Teil nur genommen.
Die Ausgangstabelle ist ein Kreuztabelle, die ich zuerst auflöse und dann die Werte prüfe und ggf. lösche.
Hoffe, das ist nicht zu irritirend, fremden Code zu lesen.
Gruß
Christoph
Der zentrale Teil


        If Cells(j, intDataStart) = 0 Then                                      'Wenn eingefügte Zelle = =
            Cells(j, intDataStart).EntireRow.Delete                             'dann Zeile löschen
        End If

     Code eingefügt mit Syntaxhighlighter 2.5


ist eingebetten in u. a. Codesegment



Set rngDimensions = Range(Cells(2, 1), Cells(lngDataRows, intDataStart - 1))    'Bereich mit Daten
Range(Cells(lngDataRows + 1, 1), Cells(Rows.Count, 1)).EntireRow.Delete         'Nicht genutzen Bereich löschen, damit die
                                                                                'CurrentRegion-Methode funktioniert
For i = intDataEnd To intDataStart + 1 Step -1                                  'durchlaufe Datenspalten
    lngPasteRow = Cells(Rows.Count, intDataStart).End(xlUp).Row + 1             'Einfügezelle ermittlen
    
    Application.StatusBar = "Spalte " & Abs(i - intDataEnd) & "/" & _
                            intDataEnd - intDataStart - 1                       'Statusbareintrag
    Range(Cells(2, i), Cells(lngDataRows, i)).Copy                              'Quellbereich kopieren
    Cells(lngPasteRow, intDataStart).PasteSpecial                               'am Ziel einfügen
    Range(Cells(2, i), Cells(lngDataRows, i)).ClearContents                     'Quelle löschen
    rngDimensions.Copy                                                          'Dimensionswerte kopieren
    Cells(lngPasteRow, 1).PasteSpecial                                          'und am Ziel einfügen
    
    lngLastRow = Cells(Rows.Count, intDataStart).End(xlUp).Row + 1              'letzte Zelle nach dem Einfügen ermitteln
    strStatusbar = Application.StatusBar                                        'Statusbareintrag sichern
    For j = lngLastRow To lngPasteRow Step -1                                   'eingefügen Bereich durchlaufen
        Application.StatusBar = strStatusbar & " Prüfe Wert auf '0'. Zeile " & _
                                Abs(j - lngLastRow) & "/" & _
                                lngLastRow - lngPasteRow                        'Statusbareintrag
        If Cells(j, intDataStart) = 0 Then                                      'Wenn eingefügte Zelle = =
            Cells(j, intDataStart).EntireRow.Delete                             'dann Zeile löschen
        End If
    Next j
Next i

     Code eingefügt mit Syntaxhighlighter 2.5

Anzeige
Oha!
27.02.2004 09:48:53
AndreasS
Morgen,
habe mir das irgendwie anders vorgestellt...
For j = lngLastRow To lngPasteRow Step - 1
If Cells(j, intDataStart) = 0 Then Rows(j).Delete
Next j
Kürzer geschrieben aber wahrscheinlich nicht schneller.
Die Bildschirmaktualisierung hast du ja sicher auch abgeschaltet.
Ansonsten fällt mir nichts ein.
Gruß Andreas
AW: Zeilen aus Liste löschen
27.02.2004 10:10:41
Rudi
Hi!
jetzt mal ganz dumm gefragt, warum nimmst du nicht den Autofilter, filterst alle Zeilen die in der Spalte 12 eine null haben - markierst sie ganz fix und schmeißt sie dann raus?
;-) ... oder soll das unbedingt per VBA gehen?
Gruss
Rudi
Anzeige
Sorry ...
27.02.2004 10:15:10
Rudi
sehe gerade, dass das Zeilen löschen nur ein Teil aus einer VBA Lösung ist. Mein Fehler, hätte ich gleich richtig lesen können. ;-)
Gruss Rudi
Das war gar nicht dumm...
27.02.2004 10:52:34
Christoph Dümmen
Hallo Rudi,
das ist echt nicht dumm. Das Problem ist nur, dass wenn ich die Kreuztabelle auflöse, das Ergebnis bei weit über 100.000 Zeilen liegt. Daher muss ich nach dem kopieren die nullen rauswerfen, um den Überlauf zu vermeiden.
Danke an Alle
Christoph

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige