2

私はここに新しいです。:) 最初に検索してみましたが、探しているものを正確に見つけることができなかったので、ここに行きます.

Excel ワークシートに、日付の列と N 個の資産の T 日次収益からなるセットがあります。私がやりたいことは、過去 x 日間のすべての資産の収益に基づいて、各月の初めに N*N 共分散行列を作成することです。

ここに共分散行列を作成するためのこのコードがありますが、Excel/VBA で各月の初めにそれらのいくつかを自動的に作成する方法がわかりません。あなたの誰かが私を助けることができれば素晴らしいです。:)

Function VarCovar(Rng As range) As Variant
Dim i As Integer
Dim j As Integer
Dim numcols As Integer

numcols = Rng.Columns.Count
Dim matrix() As Double
ReDim matrix(numcols - 1, numcols - 1)
For i = 1 To numcols
    For j = 1 To numcols
        matrix(i - 1, j - 1) = Application.WorksheetFunction.Covar(Rng.Columns(i), Rng.Columns(j))
    Next j
Next i

VarCovar = matrix

End Function
4

1 に答える 1

1

これを試して:

Sub VarCovar(rng as Range, target as Range)

    Dim i As Integer
    Dim j As Integer
    Dim numcols As Integer

    numcols = Rng.Columns.Count
    Dim matrix() As Variant
    ReDim matrix(1 to numcols, 1 to numcols)
    For i = 1 To numcols
        For j = 1 To numcols
            matrix(i, j) = Application.WorksheetFunction.Covar(Rng.Columns(i), Rng.Columns(j))
        Next j
    Next i

    Set target = target.Resize(numcols,numcols)
    target.Value = matrix
End Sub

これを行うには、データの参照範囲 (以前と同様) と、covar が表示されるターゲット位置への参照範囲を指定して関数を呼び出します。

于 2012-04-08T22:43:51.030 に答える