worksheet functions in 2D Array nutzen?
05.05.2023 16:30:00
Kalle
Hallo zusammen,
ich möchte die Berechnungen in meinem Projekt beschleunigen. Dazu sollen viele Daten in ein 2D Array eingelesen werden, dort Berechnungen angestellt und am Ende samt Ursprungsdaten wieder ausgegeben werden. Was mir bisher noch nicht gelungen ist, dass sich Worksheets Functions zeilenweise für die Datenmanipulation im Array einsetzen lassen, so wie man das von Ranges auf dem Tabellenblatt gewohnt ist. Muss ich dazu ggf. eindimensionale Zeilen-Arrays innerhalb des großen Arrays bilden und die via Schleife ansprechen? Ich möchte die Interaktion mit der Tabellenoberfläche auf jeden Fall vermeiden, da diese bei der Fülle an Daten bremst. Hier meine bisherigen Gedanken dazu:
Sub array_test()
Dim tbl_live As ListObject
Dim rngData As Range
Dim arr, arrMLB As Variant
Dim i As Long
Application.EnableEvents = False
Application.ScreenUpdating = False
Set tbl_live = Tabelle110.ListObjects("zoe_live")
Set rngData = tbl_live.DataBodyRange
tbl_live.ListColumns(8).DataBodyRange.ClearContents
tbl_live.ListColumns(9).DataBodyRange.ClearContents
'Array dimesionieren
ReDim arr(1 To rngData.Rows.Count, 1 To rngData.Columns.Count)
arr = rngData.Value
'zeilenweise Berechnungen im Array
For i = 1 To UBound(arr, 1)
ReDim arrMLB(i, 1 To 9)
'Mit Basisdaten im Array zeilenweise rechnen und Ergebnisse im Array platzieren
If Application.WorksheetFunction.CountA(arrMLB) > 0 Then
arr(i, 8) = Application.WorksheetFunction.Average(arrMLB)
arr(i, 9) = Application.WorksheetFunction.Sum(arrMLB)
Else
arr(i, 8) = ""
arr(i, 9) = ""
End If
Next i
'schreibe Daten in Tabelle aus Speicher zurück
rngData.Value = arr
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Ich freue mich wie immer auf Eure Hilfe und Ideen dazu.
Viele Grüße
Kalle