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

Optimierung einer Schleife (FOR...)

Optimierung einer Schleife (FOR...)
16.01.2003 17:34:51
rainer
Hallo! Ich habe eine For-Next-Schleife, die abhängig von Zellwerten die gesamte Zeile löscht. Dabei muß ich ca 32000 Zeilen durchlaufen.Coding sieht ungefähr so aus
For i = lR To 2 Step -1
If IsEmpty(Cells(i, 2)) Then
Rows(i).Delete
End If
If Cells(i, 2) Like "M*" Or _
Cells(i, 2) Like "D*" Or _
Cells(i, 2) Like "Ü*" Then
Rows(i).Delete
End If
Next i

Das Ding funktioniert, läuft aber eeeeeewwwigggg. Kann man das irgentwie umstellen, damit es schneller geht...vielleicht mit with range...
Vielen Dank für Eure Hilfe
Rainer

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Optimierung einer Schleife (FOR...)
16.01.2003 17:45:39
Uwe Borchert
Hallo Rainer,

Du kannst die Tabelle ja auch per Macro sortieren, dann stehen alle leeren am Ende, bzw Anfang und Du kannst sie simpel finden und löschen.
Mit den M's D' und Ü's wird es allerdings etwas schwieriger, aber wenn die Liste sortiert ist stehen die Einträge wenigstens zusammen und Du kannst z.B. mit Intervalhalbierung deutlich schneller an den Anfang und das Ende des jeweiligen Bereiches finden.

Hoffe es hilft

Uwe

Re: Optimierung einer Schleife (FOR...)
16.01.2003 17:54:06
Hajo_zi
Hallo Rainer

ich hoffe ich habe es richtig übersetzt.


Option Explicit

Sub Rainer()
Dim oblatt As Worksheet
Dim I As Integer
Dim IR As Long
Dim x As Range, oRange As Range
If [B65536] = "" Then
IR = [B65536].End(xlUp).Row
Else
IR = 65536
End If
For I = IR To 2 Step -1
If Cells(I, 2) Like "M*" Or _
Cells(I, 2) Like "D*" Or _
Cells(I, 2) Like "Ü*" Then
Cells(I, 2) = ""
End If
Next I
Set oblatt = ThisWorkbook.ActiveSheet
Set x = oblatt.Range(Cells(2, 2), Cells(IR, 2))
Set oRange = x.SpecialCells(xlCellTypeBlanks)
oRange.EntireRow.Delete
End Sub

Code eingefügt mit: Excel Code Jeanie

Code Jeanie
Frage
Das Umsetzen nach Html klappt perfekt, auch die Ansicht in den Foren ist gegeben. Bei manchen Foren kann man aber anscheinend nicht den dargestellten Code nach VBA rückkopieren. Warum?
Antwort
Dies liegt nicht an der Code Jeanie !!! Manche Foren interpretieren anscheinend < pre > < /pre > Tags nicht richtig und erzeugen am Zeilenende einen weichen Zeilenumbruch anstatt eines harten Zeilenumbruches. Dies führt dazu, dass im VBA-Editor die Zeilen hintereinander geschrieben werden. Zum Rückkopieren in solchen Fällen: Fügen Sie den kopierten Code aus dem Forum nach Word ein, kopieren Sie ihn dort wieder und fügen Sie ihn dann im VBA - Editor ein

Gruß Hajo

Anzeige
Re: Optimierung einer Schleife (FOR...)
17.01.2003 08:17:35
rainer
Hallo Hajo!
Danke for das Coding. Ich werde es etwas anpassen, weil es nicht ganz dem entspricht, wa ich machen wollte. Das Löschen von Leerzeilen geht damit aber echt rasend schnell.Das hilft mir schon arg weiter, danke
Gruß
Rainer

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige