如何对双零索引数组进行操作?

问题描述 投票:0回答:1

如何对双零索引数组进行操作?

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 中可能并非如此,但我想追求矢量化,因为感兴趣的问题规模也很小。

excel vba multidimensional-array vectorization operation
1个回答
0
投票

对相同大小的数组求和

用法

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
© www.soinside.com 2019 - 2024. All rights reserved.