Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1928to1932
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

worksheet functions in 2D Array nutzen?

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

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: worksheet functions in 2D Array nutzen?
05.05.2023 16:39:58
Daniel
ich vermute mal, dass du die 2-Arrays analog einer Exceltabelle mit Hifle von Matrixformeln be- und verarbeiten willst.
nein, das geht nicht, diese Schleifen musst du selber programmieren.
solange du die Daten nur im Array hin- und herschiebst, ist das auch kein Problem und geht sehr schell, dh her braucht man Schleifen nicht vermeiden.
das unterscheidet das Arbeiten im Array vom Arbeiten im Tabellenblatt.
Gruß Daniel


AW: worksheet functions in 2D Array nutzen?
05.05.2023 16:51:15
Kalle
Jein, nicht ganz. Ich möchte die Berechnungen ausschließlich im Array durchführen und danach das ganze Array in die Tabelle zurückschreiben. Kann ich für Datenmanipulationen nur im Array auf worksheet functions zurückgreifen und wenn ja, wie sähe das dann zeilenweise aus?

Viele Grüße

Daniel


Anzeige
AW: worksheet functions in 2D Array nutzen?
05.05.2023 17:03:18
Daniel
Hi
ob du Worksheetfunctions im Array verwenden kannst, hängt davon ab, welche Eingangsdaten die Worksheetfunction die benötigt. Manche sind mit einfachen Werten zu frieden, die kann man verwenden, andere benötigen Zellobjekte, die funktionieren dann nicht.
wenn du aus einem 2-D-Array eine einzelne Zeile oder Spalte benötigst, dann kannst du Worksheetfunction.Index verwenden.
kannst du mal eine Konkrete Aufgabe beschreiben, damit man weiß, was du rechnen willst? Wenn manches geht und maches nicht, ist es schwierig allgemein zu antworten.
Gruß Daniel


Anzeige
AW: worksheet functions in 2D Array nutzen?
05.05.2023 17:28:45
Kalle
Das steht schon grob im Code. Mehr als Summe, Durchschnitt und Zählen wird nicht gebraucht. Geht da was? Wäre klasse, wenn sich das flott im Array ermitteln ließe.


AW: worksheet functions in 2D Array nutzen?
05.05.2023 18:11:01
Daniel
Hi
wenn arr dein 2-d-Array ist, kannst du mit Worksheefunction.Index(arr, Zeile, 0) eine einzelne Zeile dieses Array als neues Array erzeugen und mit Worksheetfunction.Index(arr, 0, Spalte) eine Spalte und damit dann deine Auswertefunktionen wie Sum oder ähnliches füttern.
Das müsste gehen.
Gruß Daniel


AW: worksheet functions in 2D Array nutzen?
06.05.2023 14:32:39
Kalle
Cool, klappt hervorragend! Danke für Deine Hilfe.

VG Kalle

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige