Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1792to1796
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
Inhaltsverzeichnis

Übertragen von Daten und beschleunigen

Übertragen von Daten und beschleunigen
14.11.2020 20:49:08
Daten
Guten Abend,
ich brauche mal Profi Unterstützung.......
Ich versuche Daten von einer zur anderen Tabelle zu übertragen mit voriger Prüfung in Zeilen und Spalten.
Set wksQ = ThisWorkbook.Worksheets("Data")
Set wksZ = ThisWorkbook.Worksheets("Zeiten ")
Letzte1 = ThisWorkbook.Worksheets("Data").Cells(Rows.Count, "A").End(xlUp).Row
Letzte2 = ThisWorkbook.Worksheets("Zeiten").Cells(Rows.Count, "A").End(xlUp).Offset(5, 0).Row
For Q_x = 2 To Letzte1
If wksQ.Cells(Q_x, 7) = "x" Then
Artikel = wksQ.Cells(Q_x, 3)
Menge = wksQ.Cells(Q_x, 13)
Woche = wksQ.Cells(Q_x, 11)
For Z_X = 3 To Letzte2
If wksZ.Cells(Z_X, 3) = Artikel Then
MyRow = Z_X
For x = 9 To 248
If wksZ.Cells(6, x) = Woche Then
MyCol = x
wksZ.Cells(MyRow, MyCol) = Menge
End If
Next
End If
Next
End If
Next
Set wksQ = ThisWorkbook.Worksheets("Data")
Set wksZ = ThisWorkbook.Worksheets("Zeiten")
Letzte1 = ThisWorkbook.Worksheets("Data").Cells(Rows.Count, "A").End(xlUp).Row
Letzte2 = ThisWorkbook.Worksheets("Zeiten ").Cells(Rows.Count, "A").End(xlUp).Offset(5, 0).Row
For Q_x = 2 To Letzte1
If wksQ.Cells(Q_x, 7) = "y" Then
Artikel = wksQ.Cells(Q_x, 3)
Menge = wksQ.Cells(Q_x, 9)
Woche = wksQ.Cells(Q_x, 6)
For Z_X = 3 To Letzte2
If wksZ.Cells(Z_X, 3) = Artikel Then
MyRow = Z_X
For x = 9 To 248
If wksZ.Cells(6, x) = Woche Then
MyCol = x
wksZ.Cells(MyRow, MyCol) = Menge
End If
Next
End If
Next
End If
Das ganze funktioniert auch soweit allerdings versuche ich das ganze (x und y) zusammenzufassen.
Desweitern dauert der Code bei der Anzahl von Zeilen und Spalten über 8 Minuten.
Gibt es andere Möglichkeiten sowas umzusetzen bzw das ganze zu beschleunigen ?
Ich bin gerade froh das ich es so zusammengebaut habe das es überhaupt funktioniert.
Alles andere liegt weit über meinen können...
Würde mich wirklich sehr freuen wenn ihr mir helfen könntet.
Viele Grüße
Besten Dank
der Mani

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

Betreff
Datum
Anwender
Anzeige
AW: Übertragen von Daten und beschleunigen
15.11.2020 08:56:01
Daten
Hi,
zeig doch mal per Upload eine XL-Datei mit Bsp-Daten und deinem Code, damit wir sehen können, dass es funktioniert. Mit Datei + Daten + Code in der Datei lässt es sich einfacher testen + verbessern.
Ciao
Thorsten
AW: Übertragen von Daten und beschleunigen
15.11.2020 10:52:24
Daten
Guten Morgen,
habe es gestern leider nicht mehr geschafft mit der Beispieldatei.
https://www.herber.de/bbs/user/141568.xlsm
Vielen Dank
Viele Grüße
der Mani
AW: Übertragen von Daten und beschleunigen
15.11.2020 11:22:33
Daten
Hi,
hmm?
Ich hab die Datei getestet, habe extra Start- und Endzeitpunkt des Makros festgehalten, um zu erkennen, wieviel Zeit das Makro am Ende benötigt.
Aber bei mir benötigt das Makro genau 00:00:00
Daher kann ich noch nicht genau erkennen, wo das Problem ist.
Damit du aber vielleicht auch nach einigen Tagen/Wochen noch gut erkennst, was wann wo warum dein Code tut, hab ich a) die vielen unnötigen leeren Zeilen gelöscht und b) den Code an den Stellen so eingerückt, dass man schnell sehen kann, welche Codezeilen zusammengehören.
Also z Bsp such nach dem ersten FOR. Jetzt such nach dem NEXT, welches in seiner Zeile an der selben Stelle beginnt, wie das erste FOR.
Alle Zeilen, die zwischen dem FOR + NEXT stehen, gehören zu dieser FOR/Next-Schleife.
So gilt das auch für z Bsp alle IF/END IF, die jeweils in seinen Zeilen an der selben Stelle stehen.
https://www.herber.de/bbs/user/141570.xlsm
Sonst weiß ich leider noch nicht, wie man deinen Code schneller machen könnte.
Ciao
Thorsten
Anzeige
AW: Übertragen von Daten und beschleunigen
15.11.2020 11:58:05
Daten
Danke
In der Beispieldatei dauert läuft der Code bei mir auch schnell.
Das Problem in der eigentlichen Datei sind es über 200 Spalten und 8000 Zeilen.
Da dauert es gefühlt eine Ewigkeit.
Vielen Dank
Gruß
der Mani
AW: Übertragen von Daten und beschleunigen
15.11.2020 15:19:52
Daten
Moin,
ungetestet im Prinzip so:
Dim Q_x&, Z_X&, wksQ As Worksheet, wksZ As Worksheet
Dim MyRow&, MyCol&, x&
Dim Artikel$, Menge&, Woche$
Dim Letzte1 As Long
Dim Letzte2 As Long
Dim vntQ As Variant, vntZ As Variant
Sub Test()
Dim ldtStart As Date, ldtEnd As Date, ldtZeitunterschied As Date
ldtStart = Time
Set wksQ = ThisWorkbook.Worksheets("Data")
Set wksZ = ThisWorkbook.Worksheets("Zeiten")
Letzte1 = ThisWorkbook.Worksheets("Data").Cells(Rows.Count, "A").End(xlUp).Row
Letzte2 = ThisWorkbook.Worksheets("Zeiten").Cells(Rows.Count, "A").End(xlUp).Offset(5, 0). _
Row
vntQ = wksQ.Range(wksQ.Cells(1, 1), wksQ.Cells(Letzte1, 13)).Value
vntZ = wksZ.Range(wksZ.Cells(1, 1), wksZ.Cells(Letzte2, 29)).Value
For Q_x = 2 To Letzte1
If LCase(vntQ(Q_x, 7)) = "x" Then
Artikel = vntQ(Q_x, 3)
Menge = vntQ(Q_x, 13)
Woche = vntQ(Q_x, 11)
For Z_X = 3 To Letzte2
If vntZ(Z_X, 3) = Artikel Then
MyRow = Z_X
For x = 9 To 29
If vntZ(6, x) = Woche Then
MyCol = x
vntZ(MyRow, MyCol) = Menge
End If
Next
End If
Next
End If
Next
Set wksQ = ThisWorkbook.Worksheets("Data")
Set wksZ = ThisWorkbook.Worksheets("Zeiten")
Letzte1 = ThisWorkbook.Worksheets("Data").Cells(Rows.Count, "A").End(xlUp).Row
Letzte2 = ThisWorkbook.Worksheets("Zeiten").Cells(Rows.Count, "A").End(xlUp).Offset(5, 0). _
Row
For Q_x = 2 To Letzte1
If LCase(vntQ(Q_x, 7)) = "y" Then
Artikel = vntQ(Q_x, 3)
Menge = vntQ(Q_x, 9)
Woche = vntQ(Q_x, 6)
For Z_X = 3 To Letzte2
If vntZ(Z_X, 3) = Artikel Then
MyRow = Z_X
For x = 9 To 29
If vntZ(6, x) = Woche Then
MyCol = x
vntZ(MyRow, MyCol) = Menge
End If
Next
End If
Next
End If
Next
wksZ.Range(wksZ.Cells(1, 1), wksZ.Cells(Letzte2, 29)) = vntZ
ldtEnd = Time
ldtZeitunterschied = ldtEnd - ldtStart
MsgBox "fertig nach " & ldtZeitunterschied
End Sub

Gruß Gerd
Anzeige
AW: Übertragen von Daten und beschleunigen
15.11.2020 17:29:46
Daten
Guten Abend
Schon mal vielen Dank
Werde es gleich ausprobieren
Könntest du mir dies noch erläutern ?
vntQ = wksQ.Range(wksQ.Cells(1, 1), wksQ.Cells(Letzte1, 13)).Value
vntZ = wksZ.Range(wksZ.Cells(1, 1), wksZ.Cells(Letzte2, 29)).Value
wksZ.Range(wksZ.Cells(1, 1), wksZ.Cells(Letzte2, 29)) = vntZ
Beste Grüße
der Mani
AW: Übertragen von Daten und beschleunigen
15.11.2020 18:36:36
Daten
Hallo,
die Werte der Bereiche kommen in Arrays (Variant-Variablen);
(sie werden dort bearbeitet).
Am Schluß werden die bearbeiteten Werte aus dem Zielblatt wieder in dieses zurückgeschrieben.
Gruß Gerd
AW: Übertragen von Daten und beschleunigen
15.11.2020 18:38:46
Daten
Vielen vielen Dank
Beste Grüße
der Mani
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige