Ich habe einen Code geschrieben, der die Varianz eines wachsenden Portfolios berechnen und die Varianz 5000 Mal für jedes im Portfolio enthaltene Element berechnen soll. Der Code funktioniert wie es sollte und kein Problem.VBA: Werte an verschiedene Blätter übergeben
Wo ich ein wenig beunruhigt bin, ist, dass es 6 verschiedene Kovarianzmatrizen gibt und der Code auf jedem von ihnen laufen sollte.
Ich habe den Code in eine für jede Schleife enthalten, um die 6 verschiedenen Kovarianzmatrizen auszuwählen und zu verwenden, und es sollte funktionieren.
Ich möchte jedoch die Ausgabe (die Varianz des Portfolios) in 6 verschiedenen vordefinierten Arbeitsblättern platziert werden und nicht das gleiche wie es im Moment der Fall ist.
Mein erster Gedanke war, ein Array zu verwenden, um jedes der 6 neuen Arbeitsblätter zu durchlaufen, aber ich weiß nicht, wie man es implementiert.
Ich würde jede Anleitung sehr schätzen.
Der Code ist wie folgt:
Sub kovariansmatrice()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'Dim Var As Long
Dim k, j As Integer
Dim Random As Double
Dim i As Integer
Dim Fifth As Double
Dim varians As Variant
Dim Worksheet As Variant
Dim Worksheets As Variant
Dim outputs As Variant
Worksheets = Array("KVM1D", "KVM2D", "KVM3D", "KVM1M", "KVM2M", "KVM3M")
outputs = Array("Kovar1D", "Kovar2D", "Kovar3D", "Kovar1M", "Kovar2M", "Kovar3M")
For Each Worksheet In Worksheets
For k = 100 To 150 Step 5
Cells(2, 496) = k
For j = 1 To 5000
For i = 1 To 494
Randomize
Random = Rnd()
Worksheets("Kovarians").Cells(3, i).Value = Random
Next i
Fifth = WorksheetFunction.Large(Sheets("Kovarians").Range("A3:BHK3"), k)
Worksheets("Kovarians").Cells(5, 1).Value = Fifth
varians = Application.MMult(Application.MMult(Sheets("Kovarians").Range("A2:BHK2"), Sheets("Kovarians").Range("B11:BHL1581")), Application.Transpose(Sheets("Kovarians").Range("A2:BHK2")))
Worksheets("Kovarians").Cells(5, 3).Value = varians
Calculate
Sheets("Sheet1").Cells(j, k) = Sheets("Kovarians").Cells(5, 3)
Next j
Next k
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Next Worksheet
End Sub
Sie Robin Dank, ich hatte ein wenig Mühe, den Code in der rechten –