各位大家:关注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,但我确信这是可行的,非常简单。谢谢你的帮助。
答案 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)
我不完全确定这种语言是否可行(某些函数语言除外)。也许如果你告诉我们你为什么要这样做,我们可以帮你更多吗?