Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
268to272
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
268to272
268to272
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Geschwindigkeit in Schleife --> Dringend

Geschwindigkeit in Schleife --> Dringend
19.06.2003 22:25:08
Steffen
Hallo und guten abend,

mir hat im Forum jemand bei folgender Schleife geholfen:

Die funktioniert auch super, aber Sie dauert bei 5000 Zeilen ungefähr ne Stunde.

Wie bekomme ich dies hin, damit es relatib schnell geht?!

Danke schonmal.

Steffen


PS:

Entschldigung wenn ich einen neuen Beitrag eröffnet habe, aber ich muss das fertig bekommen, danke.

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Geschwindigkeit in Schleife --> Dringend
19.06.2003 22:31:43
RAnton

Hallo Steffen,
kannst du mal kurz erklären was die Schleife machen soll.

Dann gehts vielleicht leichter.

Gruß
RAnton

Re: Geschwindigkeit in Schleife --> Dringend
19.06.2003 22:34:58
Ramses

Hallo,

probier mal das.
Damit entfällt eine zusätzliche Prüfung und das bremsende "Select"*.
Die Variable Überzahl wird sowieso nicht verwendet und kann auch gestrichen werden:


Option Explicit

Sub komplett_bereich_admin()
Dim i As Integer, z As Integer
For i = 58 To 5000
    'Abfrage nach ausfüllen
    If Cells(i, 5) = "kopiere" Then
        For z = 1 To 12
            Cells(ActiveCell.Row, ActiveCell.Column + z).FormulaR1C1 = Cells(ActiveCell.Row - 48, ActiveCell.Column + z).FormulaR1C1
        Next z
    End If
Next i
End Sub 

     Code eingefügt mit Syntaxhighlighter 1.16

Gruss RAiner

Anzeige
Also
19.06.2003 22:43:42
Steffen

ich möchte das ab zeile 58 die werte aus der zeile 48 zeilen weiter oben übernommen werden sofern in spalte 5 das wort "kopiere" steht und dies auch nur für die 12 Spalte neben dem Wort kopiere, z.B

in Zelle F10 steht ein Wert, so soll dieser in Zelle F58, F106... usw übernommen werden, aber dies nur wenn in Zelle E58, E106... usw das Wort kopiere steht.

Ich hoffe ich habe mich nicht kompliziert ausgedrückt.

Danke schonmal

Steffen

Re: Also
19.06.2003 23:00:19
RAnton

Hallo Steffen,

hast du den Vorschlag von Ramses mal probiert?

Gruß
RAnton

faq nicht fuck
19.06.2003 23:06:30
th.heinrich

hi Steffen,

wie viele helfer willst du auf das gleiche prob ansetzen ?

z.b hier https://www.herber.de/forum/messages/271151.html

ohne gruss thomas

Anzeige
JA
20.06.2003 07:58:23
Steffen

hab ich, aber mit der Geschwindigkeit muss ich wohl leben,

danke nochmals.

Steffen

neuer Versuch
20.06.2003 08:56:09
RAnton

Hallo Steffen,

kannst du mal folgenden Code probieren.

Sub komplett_bereich_admin()
Dim i As Integer, z As Integer
Dim rangeA As Range
Dim rangeB As Range

For i = 58 To 5000
'Abfrage nach ausfüllen
If Cells(i, 5) = "kopiere" Then
Set rangeA = ActiveCell.Resize(ActiveCell.Row, ActiveCell.Column + 12)
Set rangeB = ActiveCell.Offset(-48).Resize(1, ActiveCell.Column + 12)
rangeB.Copy rangeA
Next i
End Sub

Gruß
RAnton

Re: JA
20.06.2003 09:43:08
Ramses

Hallo,

das glaube ich nicht.
Allein durch die fehlende Select Anweisung muss sich schon ein erheblicher Geschwindigkeitsvorteil ergeben.

Auf meinem Rechner ( Laptop 1,8 GHZ, 512 MB RAM ) läuft dein ursprünglicher Code in 2.5 Minuten, mit der überarbeiteten Variante ist das ganze in knapp 30 Sekunden durch,... bei 7500 Datensätzen.

Gruss Rainer

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige