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

Chartliste

Chartliste
16.05.2008 11:29:34
Tina
Hallo,
ich habe einen kleinen Code geschrieben der aus einer Tabelle anhand von drei Kriterien einen Wert finden und ihn in eine Matrix schreiben soll:

Sub Schaltfläche2_KlickenSieAuf()
For k = 11 To 1961
For j = 5 To 117
For i = 6 To 22605
If Sheets("Chartverlauf").Cells(k, 1) = Sheets("2004-2005").Cells(i, 3) Then
If Sheets("Chartverlauf").Cells(k, 2) = Sheets("2004-2005").Cells(i, 4) Then
If Sheets("Chartverlauf").Cells(1, j) = Sheets("2004-2005").Cells(i, 1) Then
Sheets("Chartverlauf").Cells(k, j) = Sheets("2004-2005").Cells(i, 2)
Exit For
End If
End If
End If
Next
Next
Next
ActiveWorkbook.Save
End Sub


Der Code funktioniert wunderbar, ist aber viel zu langsam. Hat jemand eine Idee, wie man das beschleunigen könnte? Mit 'Exit For' habe ich ja schon dafür gesorgt, dass bei einem Fund nicht weiter gesucht wird. Das hat aber trotzdem nicht viel gebracht. Für die ersten 300 Zeilen hat mein Rechner (Core Duo 2,76 Ghz) ca. 4 Stunden gebraucht.
Hintergrund: Im Sheet "Chartverlauf" ist eine Liste von 1961 Musikstücken, also Interpreten (Kriterium 1) und Titeln (Kriterium 2). In den darauf folgenden 113 Spalten sollen die Chartpositionen für die jeweilige Chartwoche (Überschrift der jeweiligen Spalte (Kriterium 3)) aus dem Sheet "2004-2005" kopiert werden. Hier sind die Top 200 Charts für alle Wochen von zwei Jahren aneinandergereiht (22600 Einträge).
Vielen Dank!

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

Betreff
Datum
Anwender
Anzeige
AW: Chartliste
16.05.2008 11:43:00
Andi
Hi,
probier mal

Sub Schaltfläche2_KlickenSieAuf()
For k = 11 To 1961
For j = 5 To 117
For i = 6 To 22605
Application.ScreenUpdating = False
If Sheets("Chartverlauf").Cells(k, 1) = Sheets("2004-2005").Cells(i, 3) Then
If Sheets("Chartverlauf").Cells(k, 2) = Sheets("2004-2005").Cells(i, 4) Then
If Sheets("Chartverlauf").Cells(1, j) = Sheets("2004-2005").Cells(i, 1) Then
Sheets("Chartverlauf").Cells(k, j) = Sheets("2004-2005").Cells(i, 2)
Exit For
End If
End If
End If
Next
Next
Next
Application.ScreenUpdating = True
ActiveWorkbook.Save
End Sub


Schönen Gruß,
Andi

Anzeige
AW: Chartliste
16.05.2008 11:54:14
Rudi
Hallo,
teste mal in einer Kopie der Mappe:

Sub Schaltfläche2_KlickenSieAuf()
Dim vntChartverlauf, vnt20042005
vntChartverlauf = Sheets("Chartverlauf").Range(Cells(11, 1), Cells(1961, 117))
vnt20042005 = Sheets("2004-2005").Range(Cells(6, 1), Cells(22605, 4))
For k = 1 To 1951
For j = 1 To 113
For i = 1 To 22600
If vntChartverlauf(k, 1) = vnt20042005(i, 3) And _
vntChartverlauf(k, 2) = vnt20042005(i, 4) And _
vntChartverlauf(1, j) = vnt20042005(i, 1) Then
vntChartverlauf(k, j) = vnt20042005(i, 2)
Exit For
End If
Next i
Next j
Next k
Sheets("chartverlauf").Range(Cells(11, 1), Cells(1961, 117)) = vntChartverlauf
'ActiveWorkbook.Save
End Sub


Gruß
Rudi

Anzeige
AW: Chartliste
17.05.2008 09:36:47
Reinhard
Moin Rudi,
da "And" den Code langsam macht, da immer der gesamte Ausdruck ausgewertet wird, egal ob schon das Erste falsch ist sollte Tina die If Abfrage "zerlegen" in 3 If-Abfragen.

Option Explicit
Sub tt()
Dim a, b, c, t, N
t = Timer
For N = 1 To 1000000
If a = 1 And b = 1 And c = 1 Then
End If
Next N
MsgBox Timer - t
t = Timer
For N = 1 To 1000000
If a = 1 Then
If b = 1 Then
If c = 1 Then
End If
End If
End If
Next N
MsgBox Timer - t
End Sub


Gruß
Reinhard

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige