VBA 配列の要素を結合する Join関数 特定の要素を取得する Filter関数

スポンサーリンク

Join【ジョイン】関数

配列に格納されている各要素を結合するには、Join【ジョイン】関数を使用します。

Join【ジョイン】関数の書式と引数の説明

[]内は省略可能です。
Join(SourceArray[,Delimiter])
【戻り値】文字列型(String)

  • SourceArray【ソースアレイ】(必須)
    結合する文字列を含む1次元配列を指定します。文字列型(String)または、バリアント型(Variant)以外の配列変数を指定するとエラーになります。Source【ソース】は「元」という意味がありArray【アレイ】は「整列する」という意味があります。
  • Delimiter【デリミタ】(省略可)
    要素を結合する区切り文字を指定します。省略した場合は、半角スペースで結合されます。「長さ0文字(“”)」を指定すると区切りなしで結合されます。Delimiter【デリミタ】は「区切記号」という意味があります。

コード例

Sub 要素結合()
Dim 配列(1) As String
Dim 表示 As String
配列(0) = "値1"
配列(1) = "値2"
表示 = Join(配列, ",")
MsgBox 表示
End Sub

実行結果

Filter【フィルター】関数

配列から特定の文字列を含む要素を取得するには、Filter【フィルター】関数を使用します。該当要素がない場合は空の配列を返します。

Filter【フィルター】関数の書式と引数の説明

[]内は省略可能です。
Filter(SourceArray,Match[,Include,Compare])
【戻り値】文字列型(String)

  • SourceArray【ソースアレイ】(必須)
    検索先の1次元配列を指定します。1次元配列でない場合はエラーになります。
  • Match【マッチ】(必須)
    検索する文字列を指定します。Match【マッチ】は「同等のもの」という意味があります。
  • Include【インクルードゥ】(省略可)
    引数Matchに指定した文字列を含む要素を返す場合は「True」含まない要素を返す場合は「False」を返します。省略した場合は「True」が指定されます。Include【インクルードゥ】は「含む」という意味があります。
  • Compare【コンペア】(省略可)
    文字列を検索するときの比較モードをVbCompareMethod列挙型の定数で指定します。省略した場合はvbBinaryCompareが指定されます。Compare【コンペアは「比較する」という意味があります。

A列の都道府県名から「県」を含む文字列を取得するコードと解説

Sub 要素結合()
Dim 配列() As String
Dim 結果配列() As String
Dim i As Integer
Dim 最終行 As Integer
最終行 = Cells(Rows.Count, 1).End(xlUp).Row - 1
ReDim 配列(最終行)
For i = 0 To 最終行
配列(i) = Cells(i + 1, 1)
Next i
結果配列 = Filter(配列, "県")
MsgBox Join(結果配列, ":")
End Sub
2行目【Dim 配列() As String】
セルのデータを格納する動的配列変数「配列()」を文字列型(String)で宣言します。


3行目【Dim 結果配列() As String】
動的配列変数「配列()」にFilter【フィルター】関数で取得した「県」が含まれる要素を格納する動的配列変数「結果配列」を文字列型(String)で宣言します。


4行目【Dim i As Integer】
繰り返し処理で使用されるセルの行番号と動的配列「配列」のインデクス番号を兼ねるカウンター変数「i」を整数型(
Integer)で宣言します。


5行目【Dim 最終行 As Integer】
セルのデータが含まれる最終行数を格納する変数「最終行」を整数型(Integer)で宣言します。


6行目【最終行 = Cells(Rows.Count, 1).End(xlUp).Row – 1】
変数「最終行」にセルのデータ最終行数-1の行番号を代入します。1減算する理由は、動的配列変数「配列」のインデクス番号として使用するため、配列のインデクス番号は0からはじまることが理由です。


7行目【ReDim 配列(最終行)】
ReDim【リデム】ステートメントを使用して動的配列変数「配列」のインデクス番号の上限値を変数「最終行」に設定します。


8行目【For i = 0 To 最終行】
For Next【フォーネクスト】ステートメントで繰り返し処理の始まりです。カウンタ―変数「i」に0から変数「最終行」を順次
代入していきます。


9行目【配列(i) = Cells(i + 1, 1)】
動的配列変数「配列」にセルの値を順次代入しています。セルの行数を1加算している理由は配列のインデクス番号に合わせて
i変数が0からはじまることが理由です。


11行目【結果配列 = Filter(配列, “県”)】
Filter【フィルター】関数を使用して動的配列「配列」の要素から、「県」を含む文字列を取得して、動的配列「結果配列」に代入します。


12行目【MsgBox Join(結果配列, “:”)】
Join【ジョイン】関数を使用して、動的配列「結果配列」に格納されている要素を「:」コロンで結合してMsgBox【メッセージボックス】関数を使用して表示します。

実行前

実行結果


以上でJoin【ジョイン】関数とFilter【フィルター】関数についての解説を終了します。ありがとうございました。

配列 関数一覧表

配列に関連する関数の一覧表です。
関数名がリンクになっていて
詳細説明ページが開きます。
関数名内容
Array配列の各要素をまとめて格納する
LBound配列インデクス番号の下限値を取得する
UBound配列インデクス番号の上限値を取得する
Split文字列を分割して配列に格納する
Join配列の要素を結合する
Filter特定の要素を取得する

スポンサーリンク

関連記事・広告