Schnellere Zuordnung von Daten (2D)
01.02.2013 10:55:54
Daten
ich bin gerade am grübeln, wie ich meinen VBA-Code schneller mach, aktuell dauert das nämlich ca. 5 Minuten, ich erläutere kurz, worum es geht:
Es geht um Daten von Lieferanten, die in eine übersichtliche Tabelle gelegt werden sollen. Dazu generiere ich eine Tabelle, die links die Lieferanten auflistet und oben den Monat & das Jahr:
Die Daten für die Matrix hole ich aus einer Tabelle, die wie folgt aussieht:
Bedingungen für eine Zuteilung ist neben der Übereinstimmung von Lieferant & Monat/Jahr noch dass die Lieferungen größer als null sein müssen. Zur Info: Die Formatierung von Monat/Jahr ist zuerst natürlich genauso wie in der Source-Datentabelle. Sie wird erst später umformatiert. Man kann also problemlos mit dem Wert der Zelle arbeiten und auf Übereinstimmung prüfen.
Aktuell mache ich das so:
Protokoll "Übertrage Daten..."
setPercent (0)
For iRow = 2 To lastRow(sAusw, 3)
For iCol = 4 To lastCol(sAusw, 1)
.Cells(iRow, iCol).HorizontalAlignment = xlCenter
For i = 2 To lastRow(sExt, 2)
If sExt.Cells(i, 2).Value = .Cells(iRow, 3).Value And sExt.Cells(i, 3). _
Value = .Cells(1, iCol).Value Then
.Cells(iRow, iCol).Value = sExt.Cells(i, 5).Value
Exit For
End If
Next
Next
'Prozentanzeige
setPercent (iRow - 1) / (lastRow(sAusw, 1) - 1)
Next
Funktioniert natürlich, dauert aber ewig, weil er ja immer wieder von vorne alles durchgeht. Ich dachte nun an eine Formel, die ich vielleicht in jede Zelle setzen kann. Kennt sich da jemand gut genug aus, um mir da was zu sagen?Vielen Dank bereits im Voraus. Wenn noch Fragen offen sind, beantworte ich die natürlich zeitnah.