0
我想創建一個模擬標準Excel MMULT函數來乘法矩陣的函數。我的代碼是:模擬Excel的功能MMULT
Function MatrixMultiplication(Matrix1 As Range, Matrix2 As Range)
Dim m1() As Long, m2() As Long, m3() As Long
m1 = Matrix1
m2 = Matrix2
If Matrix1 Is Nothing Or Matrix2 Is Nothing Then GoTo Err1
If UBound(m1, 2) <> UBound(m2, 1) Then GoTo Err2
ReDim m3(UBound(m1, 1), UBound(m2, 2))
For i = LBound(m1) To UBound(m1, 1)
For j = LBound(m2) To UBound(m1, 2)
For k = 1 To UBound(m1, 2)
m3(i, j) = m3(i,j)+ m1(i, k) * m2(k, i)
Next k
Next j
Next i
Dim Matrix3 As Range
Set Matrix3 = Range(ActiveCell.Address, ActiveCell.Offset(UBound(m1, 1) - 1, UBound(m2, 2) - 1))
Matrix3 = m3
Set MatrixMultiplication = Matrix3
Err1:
Selection.Cells(0, 0).Value = CVErr(xlErrNull)
Err2:
Selection.Cells(0, 0).Value = CVErr(xlErrNA)
End Function
不知怎的,這是行不通的。它應該作爲CSE功能。謝謝你的幫助。
編寫一個函數需要兩個變體並返回一個變體會更有意義。你爲什麼想要返回一個範圍而不是一個變體? –
但是,如果我返回變體,它會像MMULT一樣工作嗎?我的意思是CSE公式? – luka5z
是的 - 會的。如果返回一個變體(包含一個數組),那麼該數組可以返回爲用作數組公式的值作爲數組公式 –