二次元配列の一次元目の要素を増やすには以下方法があります。
実際には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万件だと倍近く差がでました。結果、別配列代入のが早いです。



コメント