【VBA】一次元配列と一次元配列を結合する
作成日:2022-12-04
更新日:2025-10-01

配列と配列を
結合したい
結合したい
3つ目の配列を用意して、値を入れていく

実は、結合ではなく新配列の作成
' Concatenate two 1D arrays safely and return as Variant array
' 2つの一次元配列を安全に結合して返す
Public Function Merge1DArrays( _
ByRef ary1 As Variant, _
ByRef ary2 As Variant) As Variant
Dim result() As Variant
Dim size1 As Long, size2 As Long
Dim i As Long
' Nullチェック|Handle Null
If IsEmpty(ary1) Then
If IsEmpty(ary2) Then
JoinOneDimAry = Array()
Exit Function
Else
JoinOneDimAry = ary2
Exit Function
End If
End If
If IsEmpty(ary2) Then
JoinOneDimAry = ary1
Exit Function
End If
' サイズ算出|Compute sizes
size1 = UBound(ary1) - LBound(ary1) + 1
size2 = UBound(ary2) - LBound(ary2) + 1
ReDim result(1 To size1 + size2)
' コピー処理|Copy elements
For i = 1 To size1
result(i) = ary1(LBound(ary1) + i - 1)
Next i
For i = 1 To size2
result(size1 + i) = ary2(LBound(ary2) + i - 1)
Next i
JoinOneDimAry = result
End Function

ループしてコピーしてる?

地道に値を入れていくの
やってること
- 新しい配列を用意する|Prepare a new array
ReDim result(1 To size1 + size2)
で結合後のサイズを確保する。 - 元の配列をコピーする|Copy the first array
For i = 1 To size1: result(i) = ary1(i): Next
- 続けてもう一方もコピーする|Copy the second array
For i = 1 To size2: result(size1 + i) = ary2(i)
イメージ図
ary1 = [A, B, C]
ary2 = [D, E]
result = [A, B, C, D, E]
Vocabulary
| Array Concatenation|配列結合 |
| Copy Elements|要素コピー |
| ReDim|再定義 |
| Loop Processing|ループ処理 |
| Safe Implementation|安全な実装 |
make a new array
and copy values into it.
and copy values into it.

実はPythonなら、arr + arr でできる
2022-12-04
編集後記:
この記事の内容がベストではないかもしれません。
記事一覧
-
[VBA]InStr文字列確認 【VBA】指定の文字列が含まれているか & 前後の文字列を返す|InStr/InStrRev -
[VBA]Redim とRedim Preserve 【VBA】配列の要素数を決める|ReDim vs ReDim Preserve & Pythonとの違い -
Excel内でSQLを使いたい 【VBA】Excelシート内の表データをSQLで操作したい -
シート名でシート取得 【VBA】シートをシート名で取得する|Worksheets(name) -
[VBA]開いていたら閉じる 【VBA】指定のブックが開いていたら閉じる -
[VBA]Nameでパス変更 【VBA】ブックのフルパスを変更する(ファイル名の変更も含む)|Name