VBA数组乘法,元素无循环

时间:2012-03-10 09:50:00

标签: arrays vba element multiplication

各位大家:关注liitle问题:

Option Base 1
Sub Test()
Dim aa() As Integer
Dim bb() As Integer
ReDim aa(3)
ReDim bb(3)
For j = 1 To 3
    aa(j) = j * 2
    bb(j) = j * 3
Next j
End Sub

现在我唯一想要做的就是将两个一维数组元素相乘而不进行循环,然后在一个范围内卸载这个新数组(6,24,54)。我相信这一定很容易实现。我将看到的解决方案是创建一个对角矩阵(数组),然后使用mmult,但我确信这是可行的,非常简单。谢谢你的帮助。

3 个答案:

答案 0 :(得分:4)

没有循环,没有办法在数组中的每个元素上进行乘法运算。有些语言看起来就是这样做的,但是它们正在循环中。

正如您在评论中提到的,您有两种选择:

  • 循环一个范围并进行乘法
  • 将范围转储到数组中,进行乘法运算,然后转储回范围

这一切都取决于你的数据,但几乎总是你会发现将一个范围转储到一个变量数组中,完成你的工作,然后将其转储回来将比循环遍历一系列单元格要快得多。如何将它转回一个范围也会影响速度,请注意。

答案 1 :(得分:4)

可以在没有显式循环的情况下乘以范围,例如尝试:

sub try()
  [c1:c3].value = [a1:a3 * b1:b3]
end sub

与以下相同的逻辑: = SUMPRODUCT(A1:A3-B1:B3; A 1:A-B1:B3)

答案 2 :(得分:0)

我不完全确定这种语言是否可行(某些函数语言除外)。也许如果你告诉我们你为什么要这样做,我们可以帮你更多吗?