7-6.配列に関する関数

今回は、配列に関する関数について説明します。

配列データの作成

Array関数:複数の値を配列データとして返す

○構文
Array(var1,var2,…)

○処理
()内にカンマ区切りで指定した複数の値を配列データとして返します。

インデックスを指定してArray関数の戻り値から要素を取り出すこともできます。
インデックスは0から始まります。

変数に配列データを格納する際などに使用できます。

Sub Array関数()

    MsgBox Array(1, 2, 3)(0)
    '>>> 1    

  Dim ary As Variant
  
    ary = Array(1, 2, 3)
    MsgBox ary(0)
    '>>> 1
    
End Sub

Split関数:特定の区切り文字で文字列を分割する

○構文
Split(exp,delimiter,[limit],[compare])

○処理
expに指定した文字列を、delimiterに指定した区切り文字で分割し、分割したデータを配列データとして返します。
戻り値の配列データは、1次元配列です。

インデックスを指定してSplit関数の戻り値から要素を取り出すこともできます。
インデックスは0から始まります。

limitに、戻り値の配列の要素数を指定します。区切り文字での分割数がlimitより大きい場合、limit以降の要素は分割されません。

compareに、delimiterの区切り文字の比較方法を指定します。

定数内容
vbUseCopmareOption-1OptionCompareステートメントの設定を使用します
vbBinaryCompare0バイナリ比較で検索します
vbTextCompare1テキスト比較で検索します
vbDatabaseCompare2Accessのみで使用します
データベース内の情報に基づいて検索します
Sub Split関数()
    
    Dim str As String: str = "あ,い,う,え,お"
    Dim ary As Variant
    
    ary = Split(str, ",", 3)
    MsgBox ary(LBound(ary))
    '>>> "あ"
    MsgBox ary(UBound(ary))
    '>>> "う,え,お" ※limit:=3のため、3つめの要素は","で分割されない
    
End Sub

配列データの結合

Join関数:配列データを結合する

○構文
Join(sourcearray,delimiter)

○処理
sourcearrayに指定した配列内の要素を、delimiterで指定した区切り文字で結合した文字列を返します。

sourcearrayは1次元配列である必要があります。

Join関数とSplit関数は対照関係があります。

Sub Join関数()

    Dim ary As Variant
    ary = Split("あ,い,う,え,お", ",")
    
    MsgBox Join(ary, ",")
    '>>> "あ,い,う,え,お"
    
End Sub

配列から要素を取得

Filter関数:配列から特定の文字列を持つ要素を取得する

○構文
Filter(sourcearray,match,[include],[compare])

○処理
sourcearray内の要素で、matchに指定した文字列を含む要素を検索し配列で返します。

sourcearrayは1次元配列である必要があります。

includeに、Trueを指定するとmatchを含む要素を返し、Falseを指定するとmatchを含まない要素を返します。

compareに、文字列の検索方法を指定します。

定数内容
vbUseCopmareOption-1OptionCompareステートメントの設定を使用します
vbBinaryCompare0バイナリ比較で検索します
vbTextCompare1テキスト比較で検索します
vbDatabaseCompare2Accessのみで使用します
データベース内の情報に基づいて検索します
Sub Filter関数()

    Dim ary As Variant
    
    ary = Filter(Array("A1", "A2", "B1", "B2"), "A")
    
    MsgBox ary(0) & " " & ary(1)
    '>>> "A1 A2"
End Sub

コメント