我正在尝试使用数组进行一些计算。
e.g。我想解决Ax=y
,所以我使用以下代码来做到这一点,其中A是方阵,y是col。向量。在VBA中,A是具有二维的数组,y是具有一维的一个。但是,此代码不起作用......
x = WorksheetFunction.MMult(WorksheetFunction.MInverse(A), y)
我哪里弄错了?谢谢!
答案 0 :(得分:7)
你可能犯了很多错误中的一个或多个:
Variant
的数组(如果数据类型不是Variant
,则大多数工作表函数不起作用。)A
和y
的维度不匹配,因为它们需要进行矩阵乘法。y
尺寸为(1,2)
而不是(2,1)
,则无效,如下例所示。 这是一个有效的例子:
Dim A As Variant
Dim y As Variant
Dim x As Variant
ReDim y(1 To 2, 1 To 1)
y(1, 1) = 2
y(2, 1) = 3
ReDim A(1 To 2, 1 To 2)
A(1, 1) = 3
A(2, 1) = 1
A(1, 2) = 4
A(2, 2) = 2
x = WorksheetFunction.MMult(WorksheetFunction.MInverse(A), y)
答案 1 :(得分:1)
让矩阵 A (3 x 3)为Range("A1:C3")
中的数组,矩阵 y (3 x 1)为{{1}中的数组},矩阵 x (3 x 1)是Range("E1:E3")
中的数组。然后你可以尝试这个简单的程序:
Range("G1:G3")
通过使用相同的过程,您可以执行此操作以查找矩阵(n x m)与矩阵(p x q)相乘的结果。当然,为了简化,您应该首先声明变量。我希望这个答案可以帮到你。