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】
セルのデータを格納する動的配列変数「配列()」の宣言です。


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


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


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


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


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


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


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


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


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


実行前

実行結果


以上で
Join関数とFilter関数についての解説を終了します。
ありがとうございました。

配列 関数一覧表

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

スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク