配列操作

2個の一次元配列を結合して、二次元配列に変換する【ExcelVBA】

2個の一次元配列を二次元配列に変換したい

二つの一次元配列を結合して二次元配列を作りたい場合、VBAでは配列を結合する関数は用意されていません
自作でロジックを組みます。

2個の一次元配列を二次元配列に変換するサンプルコード

'■一次元配列を2つ繋げて二次元配列に変換するモジュール
Public Function Call_Array_MergeTo2D(arr1 As Variant, arr2 As Variant) As Variant
    
    Dim buf() As String: ReDim buf(UBound(arr1), LBound(arr1) + 1)
    
    Dim i As Long, j As Long
    For i = LBound(arr1) To UBound(arr1)
        buf(i, LBound(arr1) + 0) = arr1(i)
        buf(i, LBound(arr1) + 1) = arr2(i)
    Next i
    Call_Array_MergeTo2D = buf
End Function

使い方

上記をお好きなモジュール内にコピペしてください。
実際に使用する時は以下のような形で使用してください。

Public Sub sample()

Dim tmp1 As Variant: tmp1 = Array(1, 2, 3, 4, 5)
Dim tmp2 As Variant: tmp2 = Array(“あ”, “い”, “う”, “え”, “お”)

Dim arr As Variant
arr = Call_Array_MergeTo2D(tmp1, tmp2)

Debug.Print arr(0, 0) ‘ 1
Debug.Print arr(0, 1) ‘ あ
End Sub

その他

  • 本記事で結合可能なのは一次元配列のみです。二次元配列は別の方法で処理する必要があります。
  • マージする配列は静的配列、動的配列どちらでもマージ可能ですが、列数は同一の必要があります。

関連記事

コメント

タイトルとURLをコピーしました