[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シートの取り込み以外には基本使わないほうがよさげです。

いいなと思ったら応援しよう!