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

Schleife DO - LOOP

Schleife DO - LOOP
24.01.2005 22:07:34
Michael
Hallo Kollegen.
Ich bräuchte mal eure Hilfe zum Thema DO - LOOP.
Ich verarbeite eine recht große Datei mit derzeit etwa 12.000 Sätzen.
Dies mache ich über eine DO-LOOP-Schleife. Innerhalb der Schleife prüfe ich
über zwei IF-Schleifen Bedingungen ab und lösche bzw. kopiere etwa die
Hälfte aller Sätze.
Dieser Vorgang dauert nun etwa drei Minuten.
Mir scheint das etwas lange zu sein. Gibt es möglicherweise eine andere,
schnellere Art, große Dateien über ein Schleife satzweise zu verarbeiten?
Vielen Dank schon mal.
Gruß, Michael
https://www.herber.de/bbs/user/16772.xls

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

Betreff
Datum
Anwender
Anzeige
AW: Schleife DO - LOOP
P@ulchen
Hi Micha,
versuch mal, die "Select´s" einzusparen...


Sub muster_ausschnitt_aus_einem_excel()
i = 1
x = 1
Do Until Cells(i, 1).Value = "ENDE"
    If IsNumeric(Cells(i, 4).Value) = False Or Cells(i, 4).Value = "" Then
        Cells(i, 1).EntireRow.Delete
    Else
        'wenn Material = 0 oder leer oder Menge = leer, dann Sätze kopieren und Warnung ausgeben
        If Cells(i, 1).Value = 0 Or Cells(i, 1).Value = "" Or Cells(i, 1).Value = "" Then
            Rows(i).Copy
            Sheets("Problemfälle").Rows(x).Insert Shift:=xlDown
            x = x + 1
            warnung = True
            Cells(i, 1).EntireRow.Delete
            GoTo nächster
        End If
        i = i + 1
nächster:
    End If
    Call refreshPB
Loop
End Sub


Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
Anzeige
AW: Schleife DO - LOOP
Ramses
Hallo Paulchen
Die dritte If-Prüfung "...Or Cells(i, 1).Value = ""..." ist eigentlich überflüssig.
Das Makro
Call refreshPB
wäre auch noch interessant zu sehen :-)
Gruss Rainer
AW: Schleife DO - LOOP
P@ulchen
Hallo Rainer,
hast Recht, hab ich übersehen.
Bei Call refreshPB wird es sich wohl um eine Fortschrittsanzeige handeln, die bei 3 min sicher Sinn macht ;-))
Vielleicht könnte man ja auch mit Autofilter arbeiten (zB. alle gefilterten löschen) und damit weitere Zeit gewinnen...
Gruß aus Leipzig
P@ulchen
Anzeige
AW: Schleife DO - LOOP
Ramses
Hallo Paulchen
nachdem es bei jeder neuen Zelle aufgerufen wird, hat das sicher Einfluss auf die Performance.
Schauen wir mal ob er es uns zeigt :-)
Gruss Rainer
AW: Schleife DO - LOOP
26.01.2005 20:28:47
Michael
Hallo Ihr beiden.
Erstmal danke für die Tips.
Bei dem refreshPB handelt es sich tatsächlich um einen Fortschrittsbalken.
(übrigens von dieser page geladen)

Sub refreshPB()
mfWidth = mfWidth + mfStep
frmPB.PBx.Width = mfWidth
DoEvents
End Sub

Ich werde jetzt mal die Version ohne den Select testen und anschließend den Tip mit
dem Autofilter umsetzen.
Übrigens: auf dem Rechner in der Arbeit habe ich eine Datei mit 25.000 Sätzen
verarbeitet und musste genau 14:50 Minuten warten. Sicher kostet der Fortschrittsbalken Performance, aber ohne weiß der Anwender ja gar nicht wie lange er noch warten muss.
Ich lass es euch wissen, was es gebracht hat. Danke nochmal.
Anzeige
AW: Schleife DO - LOOP
26.01.2005 20:44:02
Michael
Nochmal Hallo.
Hab es gerade getestet:
Version ohne Select: keine Sekunde gespart!
Version ohne refresh: etwa 15 Sekunden gespart!
Jetzt möchte ich noch den Autofilter testen. Das setzen des Filters ist klar.
Aber wie lösche ich nur die gefilterten Sätze?
Bitte um ein kleines Beispiel.
Danke, Michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige