Мне нужна помощь в создании матрицы, которая соответствует этому уравнению:
c * matrix1 + (1-c) * matrix2
Где matrix1 определяется как:
Function VarCovarZeros(InputMatix As Range) As Variant
Dim MatrixColumns As Long
MatrixColumns = InputMatix.Columns.Count
Dim MatrixRows As Long
MatrixRows = InputMatix.Rows.Count
Dim Matrix() As Double
ReDim Matrix(1 To MatrixColumns, 1 To MatrixColumns)
Dim i As Long
For i = 1 To MatrixColumns
Matrix(i, i) = Application.WorksheetFunction.Covar(InputMatix.Columns(i), InputMatix.Columns(i)) * MatrixRows / (MatrixRows - 1)
Next i
VarCovarZeros = Matrix
End Function
А матрица 2 задается как:
Function VarCovar(rng As Range) As Variant
Dim i As Integer
Dim j As Integer
Dim numcols As Integer
numcols = rng.Columns.Count
numrows = rng.Rows.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)) * numrows / (numrows - 1)
Next j
Next i
VarCovar = Matrix
End Function
Матрицы основаны на одних и тех же необработанных данных, но их необходимо динамически обновлять каждый период, поэтому они нужны не только для двух статических матриц.
Я хочу поместить его в функцию Excel, чтобы:
с находится в "M1"
minverse(M1*VarCovarZeros(A3:F27)+(1-c)*(VarCovar(A3:F27))
Но похоже, что он не читает часть "M1 * VarCovarZeros (A3: F27) + (1-c) * (VarCovar (A3: F27))" как одну матрицу, поскольку она не дает результатов, это должен.
Вот почему мне нужна помощь в создании матрицы с VBA, поэтому можно будет сказать:
minverse(matrix3(A3:F27))
Кто-нибудь может помочь?