excel - 我想通过 VBA 在我的工作表中创建一系列协方差矩阵

标签 excel matrix covariance vba

我是新来的。 :) 我先尝试搜索,但找不到我要找的确切内容,所以就到这里。

我的 Excel 工作表中有一组包含 N Assets 的日期列和 T 每日返回。我想要做的是根据过去 x 天所有 Assets 的 yield 为每个月初创建一个 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

最佳答案

尝试这个:

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

现在,当您希望完成此操作时,请使用数据的引用范围(如前所述)和显示协变量的目标位置的引用范围来调用该函数。

关于excel - 我想通过 VBA 在我的工作表中创建一系列协方差矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10064687/

相关文章:

excel - 使用 VBA 在 Excel 中创建饼图

javascript - Excel like 列标题选项过滤算法

matlab - 查找列中具有特定值的行

scala - Scala 中关于协方差的一些问题

python - Numpy polyfit - 协方差矩阵

vba - 从每月名称文件复制数据表的宏公式是什么?

excel - vba 从工作簿复制范围并粘贴到电子邮件中?

r - 使用向量按列对大型 R 矩阵进行排序

java - 如何实现一种方法来查找 5x5 矩阵中每行和每列的最大元素?

c# - 通用类和接口(interface)的非通用版本