Anzeige
Archiv - Navigation
1712to1716
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

Multiplikation großer Datenmengen - Datenfelder?!

Multiplikation großer Datenmengen - Datenfelder?!
26.09.2019 20:43:16
Christian
Guten Abend zusammen,
ich komme gerade bei einem Problem nicht weiter und benötige die Hilfe von euch.
Ich würde das ganze gerne mit Arrays/Datenfeldern in VBAlösen.
Ich möchte für 246 Zeilen und 5 Spalten jeweils einen Wert pro Zeile errechnen.
Dieser einzelne Wert setzt sich zusammen aus.
w = Gewicht Asset
r = Rendite Asset
R = w1*r1 + w2*r2 + w3*r3 + w4*r4 + w5*r5
Die Daten für (w1-5) liegen im Bereich C14:G259 vor und
die Daten für (r1-5) liegen im Bereich B5:B250 eines anderen Tabellenblattes vor.
Wie bereits oben beschrieben würde ich dieses Problem gerne per VBA lösen, da im späteren Verlauf die anzahl der Gewichte respektiv der Renditen erhöht/reduziert werden sollen.
Über Anregungen bzw. Hilfe würde ich mich freuen. Einen vernünftige Code dafür habe ich noch nicht zustande bekommen. Da mir dafür der Ansatz fehlt.
Beste Grüße
Christian

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Multiplikation großer Datenmengen - Datenfelder?!
26.09.2019 21:20:20
onur
"die Daten für (r1-5) liegen im Bereich B5:B250 eines anderen Tabellenblattes vor." ?
Du meinst wphl B5:F250.
AW: Multiplikation großer Datenmengen - Datenfelder?!
26.09.2019 21:25:40
Christian
Hi onur,
danke für die Berichtigung!
Ja so ist es.
Grüße
AW: Multiplikation großer Datenmengen - Datenfelder?!
26.09.2019 21:46:16
Dieter
Hallo Christian,
das könnte z.B. so aussehen (Ergebnis wird in das separate Blatt "Ergebnis" geschrieben):
Sub Multiplikation()
Dim i As Long
Dim produkt As Double
Dim varG As Variant
Dim varR As Variant
Dim wb As Workbook
Dim wsE As Worksheet
Dim wsG As Worksheet
Dim wsR As Worksheet
Dim zeileE As Long
Dim zeileG As Long
Dim zeileR As Long
Set wb = ThisWorkbook
Set wsE = wb.Worksheets("Ergebnis")
Set wsG = wb.Worksheets("Gewicht")
Set wsR = wb.Worksheets("Rendite")
zeileE = 2
zeileG = 14
zeileR = 5
For i = 1 To 246
zeileG = i + 13
zeileR = i + 4
zeileE = i + 1
varG = wsG.Cells(zeileG, "C").Resize(, 5)
varR = wsR.Cells(zeileR, "B").Resize(, 5)
produkt = WorksheetFunction.SumProduct(varG, varR)
wsE.Cells(zeileE, "A") = produkt
Next i
End Sub
https://www.herber.de/bbs/user/132225.xlsm
Viele Grüße
Dieter
Anzeige
AW: Multiplikation großer Datenmengen - Datenfelder?!
26.09.2019 21:47:45
onur
Oder so:
Private Sub CommandButton1_Click()
Dim w, r, RR(1 To 246), i
w = Sheets("Tabelle1").Range("C14:G259").Value 'Hier Blattnamen einsetzen
r = Sheets("Tabelle2").Range("B5:F250").Value 'Hier Blattnamen einsetzen
For i = 1 To 246
RR(i) = w(i, 1) * r(i, 1) + w(i, 2) * r(i, 2) + w(i, 3) * r(i, 3) + w(i, 4) * r(i, 4) +  _
w(i, 5) * r(i, 5)
Next i
End Sub

AW: Multiplikation großer Datenmengen - Datenfelder?!
26.09.2019 22:32:48
Christian
Danke Dieter und onur,
ich schau morgen danach wie ich die Ideen am besten bei mir einbauen kann und gebe euch nochmal bescheid.
Bis dahin gute Nacht und vielen Dank.
Grüße
AW: Multiplikation großer Datenmengen - Datenfelder?!
27.09.2019 14:19:51
Christian
Hallo onur und alle anderen hier im Forum,
ich habe nun deinen Code bei mir eingebaut, funktioniert natürlich super! Danke dir.
Nun hätte ich noch eine Erweiterung bei der du/ Ihr mir ggf. auch helfen könnt.
Ich würde gerne das ganze dynamisch gestalten.
Dies bedeutet, das die Zeilen und Spaltenanzahl der zwei Bereich sich verändern kann, je nachdem wie viele Datenreihen ich betrachte. Die Zeilen und Spalten sind immer gleich.
Es sind jedoch immer mindestens 2 Spalten pro Bereich ( Gewichte, Renditen).
Ich habe deinen Code schonmal etwas umgeschrieben und die zeilenanzahl dynamisch gestaltet. Nun müssen noch die Spalten dynamisch sein.
Für mich stellt sich hier nur die Frage:
Wie lässt sich der Array Erp(i) ermitteln. Dieser wird ja nach folgender Formel ermittelt:
R = w1*r1 + w2*r2 + w3*r3 + w4*r4 + w5*r5
Und wenn ich nun nur 2 Spalten betrachte, fallen ja die w3*r3 bis w5*r5 weg.
Hier mal mein überarbeitetr Code.

Sub Portfoliorendite()
Dim Pr As Worksheet
Dim rg As Range
Dim Zeilen As Integer
Set Pr = ThisWorkbook.Worksheets("Portfoliorendite")
Dim w, r, ERp() As Double
Dim i As Long
Set rg = Range("C14").CurrentRegion
Zeilen = rg.Rows.Count
w = Pr.Range("C14").CurrentRegion.Value
r = Pr.Range("I14").CurrentRegion.Value
ReDim ERp(1 To Zeilen)
For i = 1 To Zeilen
ERp(i) = w(i, 1) * r(i, 1) + w(i, 2) * r(i, 2) + w(i, 3) * r(i, 3) + w(i, 4) * r(i, 4)  _
+ w(i, 5) * r(i, 5)
Next i
End Sub

Beste Grüße Christian
Anzeige
AW: Multiplikation großer Datenmengen - Datenfelder?!
27.09.2019 17:35:05
onur
Ich dachte, die Datensätze befinden sich auf verschiedenen Blättern?
     For i = 1 To zeilen
For ii = 1 To UBound(w, 2)
ERp(i) = ERp(i) + w(i, ii) * r(i, ii)
Next ii
Next i

AW: Multiplikation großer Datenmengen - Datenfelder?!
27.09.2019 19:57:31
Christian
Hi onur,
danke dir für die schnelle Antwort.
Da ich noch relativ unerfahren bin mit VBA möchte ich dich bitten, mir kurz den Vorgang
hinter der inneren For-Schleife zu erklären.
For ii = 1 To UBound(w, 2)
ERp(i) = ERp(i) + w(i, ii) * r(i, ii)
Next ii
Hast du nun einen zweidimensionalen Array erstellt, welcher aus dem w array und einer zusätzlichen spalte besteht?
Ist dieser array nun dynamisch? Sprich ich könnte eine Datenfeld aus 2 Spalten mit einem Datenfeld mit 2 Spalten multipliziere,
Genauso zwei Datenfelder mit je 8 oder 10 Spalten?
Viele Grüße,danke für deine Hilfe und schönes Wochenende.
Christian
Anzeige
AW: Multiplikation großer Datenmengen - Datenfelder?!
27.09.2019 20:15:46
onur
Die Variablen w und r werden durch
w = Pr.Range("C14").CurrentRegion.Value
r = Pr.Range("I14").CurrentRegion.Value

automatisch in 2-dimensionale Arrays verwandelt, als ob du vorher geschrieben hättest:
Redim w(zeile, AnzahlSpalten)
Redim r(zeile, AnzahlSpalten)

Das Einzige was ich geändert habe, ist, dass die innere Schleife mit Varable ii, die von 1 bis Anzahl der Spalten (die Obergrenze der 2. Dimension von ERp) läuft, alles aufsummiert. Wenn 2 Spalten da sind, wird die innere Schleife 2x ausgeführt, bei 3 Spalten 3x usw.
Anzeige
AW: Multiplikation großer Datenmengen - Datenfelder?!
27.09.2019 20:17:11
onur
Meine natürlich die Obergrenze der 2. Dimension von w (also Anzahl fer Spalten).
AW: Multiplikation großer Datenmengen - Datenfelder?!
27.09.2019 20:17:36
onur
Meine natürlich die Obergrenze der 2. Dimension von w (also Anzahl der Spalten).
AW: Multiplikation großer Datenmengen - Datenfelder?!
27.09.2019 21:47:02
Christian
Hi onur,
mehr oder weniger habe ich die Erklärung verstanden :-).
Der Code funktioniert aufjedenfall.
Besten Dank.
Grüße
Christian

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige