如何在VBA中添加两个矩阵?

如何在VBA中添加两个矩阵?,vba,excel,Vba,Excel,我想知道如何在VBA中添加两个矩阵: Sub add_two_matrices() Dim A As Variant Dim B as Variant A = ActiveWorkbook.Sheets("Location_of_A").Range("A1: A5") B = ActiveWorkbook.Sheets("Location_of_B").Range("A1: A5") 其中A=[1,2,3,4,5]和B=[2,3,4,5,6] 我想得到C=A+B,也就是[3,5,7,9,11]

我想知道如何在VBA中添加两个矩阵:

Sub add_two_matrices()
Dim A As Variant
Dim B as Variant
A = ActiveWorkbook.Sheets("Location_of_A").Range("A1: A5")
B = ActiveWorkbook.Sheets("Location_of_B").Range("A1: A5")
其中A=[1,2,3,4,5]和B=[2,3,4,5,6]
我想得到C=A+B,也就是[3,5,7,9,11]

不确定,但最接近的是:

Edit2:合并
转置
将返回1D数组

Dim c, i As Integer
c = Evaluate("Transpose(Location_of_A!A1:A5)+Transpose(Location_of_B!A1:A5)")

'/* loop to check the values */
For i = LBound(c) To UBound(c)
    Debug.Print c(i)
Next
您还可以使用
MMULT WorksheetFunction
获取所需内容。

Dim a, b, c, i As Integer

With Application
    a = .Transpose(Sheets("Location_of_A").Range("A1:A5"))
    b = .Transpose(Sheets("Location_of_B").Range("A1:A5"))
    c = .WorksheetFunction.MMult(Array(1, 1), Array(a, b))
End With

'/* loop to check values */
For i = LBound(c) To UBound(c)
    Debug.Print c(i)
Next
因为您的值在工作表中,所以上述方法有效。

但是,如果您需要纯VBA解决方案,则必须循环。

您想要Sub还是函数?对不起,我是VBA新手,不知道两者之间的区别。我实际上是在编写Sub和wnat,以便在Sub中添加两个矩阵。@JunJang函数是一段执行某些操作的原子代码;子(例程)通常是VBA中的一个“程序”,可以容纳许多函数。
函数
可以返回结果,并可以在Excel公式中使用<代码>子项不能。