如何对双零索引数组进行操作?
即
sub script ‘VBA code line
Dim s(), r() ‘VBA code line
s=[{1,2;3,4;5,6}] ‘VBA code line
r=sum(application.index(s,0,0), [{7,7;7,7;7,7}]) ‘failed VBA code line
r
等于数组 s
和数值数组的总和,两者的大小均为 3 行 x 2 列,其中后者的数值输入数组有 7s 的元素。
r
应该等于这个数组 {[8,9;10,11;12,13]}
需要纠正什么才能使此方法发挥作用?
申请前我已经尝试过
worksheet(“sheet1”)
,但没有效果。
我知道循环,但我想尝试矢量化答案。我的背景是 MATLAB,矢量化比循环更快。虽然这在 Excel 中可能并非如此,但我想追求矢量化,因为感兴趣的问题规模也很小。
用法
Sub SumDataTest()
Dim s() As Variant, r() As Variant
s = [{1,2;3,4;5,6}]
'PrintData s
r = SumData(s, [{7,7;7,7;7,7}])
'PrintData r
End Sub
功能
Function SumData(ByVal Data1 As Variant, ByVal Data2 As Variant) As Variant
Dim r As Long, c As Long
For r = LBound(Data1, 1) To UBound(Data1, 1)
For c = LBound(Data1, 2) To UBound(Data1, 2)
Data1(r, c) = Data1(r, c) + Data2(r, c)
Next c
Next r
SumData = Data1
End Function
打印数据结果
s
1 2
3 4
5 6
r
8 9
10 11
12 13
此处找到
PrintData
程序。