如何添加数组?

在通过循环计算时,我在Excel中遇到以下问题:我需要一个variables(目标variables),它依次存储每个循环完成后生成的结果(避免使用循环引用),如下所示:

'Let's call it "origin" variable in the worksheet Origin Variable (50 x 50 array) 1 2 4 2 3 4 2 2 3 'Let's call it "destination" variable in the worksheet Destination Variable (50 x 50 array) 1 1 1 1 1 1 1 1 1 

每个循环后,我需要macros执行以下代码:

 range("destination").value = range("destination").value + range("origin").value 

所以在当前循环之后目标variables看起来像这样:

 Destination Variable 2 3 5 3 4 5 3 3 4 

但是,Excel不允许我执行以前的function。
有没有人有答案,这可以解决?

很容易。 我是通过macros观和整理来logging的。

 Sub Macro1() Range("origin").Copy Range("destination").PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False End Sub 

我喜欢@S Meaden的回答,这很简单,我没有想到这一点。 这当然也适用于这个目的。

你也可以做简单的迭代。 在下面的例子中,我添加了两个不同的范围,并把它们放在第三个范围,但是这可以很容易地重新处理您的需求,或者如果您需要将范围添加到另一个范围是另一个选项:

 Sub AddArrays() Dim rng1 As Range Dim rng2 As Range Dim rngSum As Range Dim arr1 As Variant Dim arr2 As Variant Dim arrSum As Variant Set rng1 = Range("A1:C7") '## Modify as needed Set rng2 = Range("F1:H7") '## Modify as needed Set rngSum = Range("K1:M7") '## Modify as needed 'Raises an error, Type Mismatch 'rngSum.Value = rng1.Value + rng2.Value arr1 = rng1.Value arr2 = rng2.Value arrSum = rngSum.Value Dim x As Integer, y As Integer For x = LBound(arr1, 1) To UBound(arr1, 1) For y = LBound(arr1, 2) To UBound(arr1, 2) arrSum(x, y) = arr1(x, y) + arr2(x, y) Next Next 'Print result to sheet rngSum.Value = arrSum End Sub