[VBA]2つの2次元配列を結合しよう
VBAで2次元配列同士を結合する方法は標準ではサポートされていないようです。ということで自分でつくってみました。
'=======================================================
Sub mergeArray(base_array As Variant, add_array As Variant)
'=======================================================
'base_array, add_arrayが初期化されているかは確認の上利用する。
'この関数は列数が同じことが前提
'2次元配列が前提
Debug.Print " Sub mergeArray()"
'結合する配列のサイズ
Dim base_array_row As Long
Dim base_array_col As Long
base_array_row = UBound(base_array, 1)
base_array_col = UBound(base_array, 2)
Dim add_array_row As Long
Dim add_array_col As Long
add_array_row = UBound(add_array, 1)
add_array_col = UBound(add_array, 2)
'結合後の配列のサイズ
Dim newArray_row As Long
Dim newArray_col As Long
newArray_row = base_array_row + add_array_row
newArray_col = base_array_col
'結合後の配列
Dim newArray As Variant
ReDim newArray(1 To newArray_row, 1 To newArray_col)
'配列を結合する
Dim row As Long
Dim col As Long
For row = 1 To newArray_row
If (row <= base_array_row) Then
For col = 1 To newArray_col
newArray(row, col) = base_array(row, col)
Next col
Else
For col = 1 To newArray_col
newArray(row, col) = add_array(row - base_array_row, col)
Next col
End If
Next row
'Erase base_array
base_array = newArray
Debug.Print " End of Sub mergeArray()"
End Sub
しかし2次元配列は、各次元の意味がつかみずらく可読性に劣るため、Exclシートの取り込み以外には基本使わないほうがよさげです。