二次元配列の一次元目の要素を増やすには以下方法があります。
実際には65537件以上はTranspose関数を利用した場合は正常にデータ取得できないので、
別配列に代入がおすすめなのですが、速度的にはどちらのが早いでしょうか。
検証しました。
Transposeもしくは別配列代入はどちらが早いか?
Public Sub test() Dim stime As Single: stime = Timer Dim arr As Variant Dim sLen As Long: sLen = 1 '■配列の宣言 ReDim arr(1 To 1, 1 To 30) '■Forで回しながら、arrの縦要素を増やしていく Dim i As Long For i = 1 To 10000 Application.StatusBar = i DoEvents sLen = sLen + 1 'arr = Call_RedimPreserveArray(arr, sLen) arr = CallArraySizeUp(arr, sLen) Next Debug.Print "経過時間=" & Format(Timer - stime, "00.000") End Sub
結果
1,000件 | 10,000件 | |
Transpose | 4.317秒 | 355.921秒 |
別配列 | 3.713秒 | 145.76秒 |
1万件だと倍近く差がでました。結果、別配列代入のが早いです。
コメント