分かりやすく、使いやすく。

2個の配列をマージする方法

スポンサーリンク

Excel VBA の標準関数では配列を結合する関数は用意されていません。その為、配列をマージするにはロジックを作成する必要があります。

  1. Join と Split を使用する方法
  2. 関数を自作する方法


Join と Split を使用する方法

Joinと Split を使用すると次の方法で配列をマージすることができます。

VBA(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub test1()
    Dim names1 As Variant
    Dim names2 As Variant
    Dim names3 As Variant
    
    names1 = Array("太郎", "次郎", "三郎")
    names2 = Array("四郎", "五郎", "六郎")
    
    '配列の内容を全て文字列として結合した後、分割して一つの配列にする。
    names3 = Split(Join(names1, vbCrLf) & vbCrLf & Join(names2, vbCrLf), vbCrLf)
    
    '中身の確認
    Dim name As Variant
    
    For Each name In names3
        Debug.Print name
    Next name
End Sub 

この方法の場合、Join と Split の区切り文字として指定する文字(上記のコードの場合、 vbCrLf=改行コード)は、配列内に含むことができません。

上記コードの実行結果は次の通りです。

イミディエイトウインドウ
1
2
3
4
5
6
太郎
次郎
三郎
四郎
五郎
六郎 

関数を自作する方法

次のサンプルコードでは、 mergeArray という関数を作成して配列のマージを行っています。

VBA(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Option Explicit
 
Sub test2()
    Dim names1 As Variant
    Dim names2 As Variant
    Dim names3 As Variant
    
    names1 = Array("太郎", "次郎", "三郎")
    names2 = Array("四郎", "五郎", "六郎")
    
    names3 = mergeArray(names1, names2)
    
    '中身の確認
    Dim name As Variant
    
    For Each name In names3
        Debug.Print name
    Next name
End Sub
 
Function mergeArray(ary1 As Variant, ary2 As Variant)
    Dim newArray()
    Dim i As Integer
    Dim itemCounter As Integer
    
    itemCounter = 0
    
    '1個目の配列の内容を新しい配列に移す。
    For i = LBound(ary1) To UBound(ary1)
        ReDim Preserve newArray(itemCounter)
        newArray(itemCounter) = ary1(i)
        itemCounter = itemCounter + 1
    Next i
    
    '2個目の配列の内容を新しい配列に移す。
    For i = LBound(ary2) To UBound(ary2)
        ReDim Preserve newArray(itemCounter)
        newArray(itemCounter) = ary2(i)
        itemCounter = itemCounter + 1
    Next i
    
    mergeArray = newArray
End Function 

上記を実行するとイミディエイトウインドウに次の内容が出力されます。

イミディエイトウインドウ
1
2
3
4
5
6
太郎
次郎
三郎
四郎
五郎
六郎 
スポンサーリンク
スポンサーリンク