Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Schleife beschleunigen

Forumthread: Schleife beschleunigen

Schleife beschleunigen
19.11.2013 09:19:39
karl
Guten morgen vba-ler
ich habe hier eine schleife(verschachtelt) mit der ich aus Tabelle1 daten in tabelle2
übertrage.Klappt soweit, dauert aber recht lange.
https://www.herber.de/bbs/user/88147.xls
lässt sich hier was besser oder schneller machen

For c = 8 To 31 Step 2
For a = 2 To 32
For b = 7 To 371
If Sheets("Tabelle2").Cells(c, a).Value = Sheets("Tabelle1").Cells(b, 1).Value Then
Sheets("Tabelle2").Cells(c + 1, a).Value = Sheets("Tabelle1").Cells(b, i).Value
Else
Sheets("Tabelle1").Cells(c + 1, a).Value = ""
End If
Next b
Next a
Next c
Wie immer
rechtherzlichen dank
karl

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Schleife beschleunigen
19.11.2013 10:09:44
ChrisL
Hi Karl
Sub t()
Dim WS1 As Worksheet, WS2 As Worksheet
Dim ws1Spalte As Byte, ZeileCounter As Integer
Dim iZeile As Integer, iSpalte As Integer
Set WS1 = Worksheets("Tabelle1")
Set WS2 = Worksheets("Tabelle2")
ws1Spalte = Application.Match(WS2.Range("D3"), WS1.Rows(6))
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
ZeileCounter = 6
For iZeile = 8 To 31 Step 2
For iSpalte = 2 To 32
If WS2.Cells(iZeile, iSpalte) = "" Then
Exit For
Else
ZeileCounter = ZeileCounter + 1
WS1.Cells(ZeileCounter, ws1Spalte).Value = WS2.Cells(iZeile + 1, iSpalte)
End If
Next iSpalte
Next iZeile
Application.Calculation = xlAutomatic
Application.ScreenUpdating = True
End Sub

cu
Chris

Anzeige
AW: Schleife beschleunigen
19.11.2013 10:25:29
karl
Hallo chris,
habe deinen Code eingesetzt, scheint aber genau anders rum zu laufen
es passiert nichts
In Tabelle 2 sollen die daten von Tabelle 1 geschrieben werden
Habe mal WS1 und WS2 getauscht, aber das ist wohl nicht richtig.
Kannst du nco mal drüber schauen
danke
karl

Anzeige
AW: Schleife beschleunigen
19.11.2013 10:32:43
ChrisL
Hi Karl
Einfach umkehren :)
Sub t()
Dim WS1 As Worksheet, WS2 As Worksheet
Dim ws1Spalte As Byte, ZeileCounter As Integer
Dim iZeile As Integer, iSpalte As Integer
Set WS1 = Worksheets("Tabelle1")
Set WS2 = Worksheets("Tabelle2")
ws1Spalte = Application.Match(WS2.Range("D3"), WS1.Rows(6))
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
ZeileCounter = 6
For iZeile = 8 To 31 Step 2
For iSpalte = 2 To 32
If WS2.Cells(iZeile, iSpalte) = "" Then
Exit For
Else
ZeileCounter = ZeileCounter + 1
WS2.Cells(iZeile + 1, iSpalte).Value = WS1.Cells(ZeileCounter, ws1Spalte).Value
End If
Next iSpalte
Next iZeile
Application.Calculation = xlAutomatic
Application.ScreenUpdating = True
End Sub

cu
Chris

Anzeige
AW: Schleife beschleunigen
19.11.2013 10:35:38
karl
Vielen dank chris
läuft rund
karl
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige