サイトについて      連絡先   検索

VBA Split 関数

はじめに

Excel VBA マクロの Split 関数を紹介します。

Split 関数は、区切り文字で区切られた文字列を配列にして返します。

カンマ区切りの文字列を配列に分割したいときに使用します。

  • 目次
    • 構文
    • 解説
    • 使用例

構文

Split(文字列)
半角スペースで区切られた文字列を分割して配列に変換します。

Split(文字列, 区切り文字, 最大分割数, 比較モード)
指定した区切り文字で分割します。最大分割数で分割する数を指定できます。比較モードで大文字と小文字を区別するか指定できます。

引数「文字列」文字列を指定します。
引数「区切り文字」省略できます。分割する区切り文字を指定します。
引数「最大分割数」省略できます。区切り文字で分割する最大数を指定します。
引数「比較モード」省略できます。引数「区切り文字」の大文字と小文字を区別して検索するかを指定します。
戻り値の型文字列型の配列 (String)

引数「比較モード」

単位 説明
vbBinaryCompare (既定)「大文字と小文字」、「半角と全角」、「ひらがなとカタカナ」を区別する。
vbTextCompare区別しない。

解説

引数「区切り文字」を省略したときは半角スペース" "で分割します。

引数「区切り文字」が見つからないときは、要素数が 1 つの配列を返します。配列の最初の要素に引数「文字列」がそのまま入っています。

引数「最大分割数」を省略したときは、引数「区切り文字」ですべて分割した配列を返します。これは-1を指定したときと同じです。

引数「最大分割数」が1なら、要素数が 1 つの配列を返します。配列の最初の要素に引数「文字列」がそのまま入っています。

引数「最大分割数」に2なら、要素数が 2 つの配列を返します。最初に見つかった区切り文字の位置で分割されます。

作成される配列は動的配列で、最初のインデックスは0からスタートします。

使用例


Sub 実行()
    Dim list() As String

    list = Split("a-b-c")
    Call PrintArray(list) ' 0=a-b-c

    list = Split("a b c") ' " " が区切り文字
    Call PrintArray(list) ' 0=a, 1=b, 2=c

    list = Split("a-b-c", "-")
    Call PrintArray(list) ' 0=a, 1=b, 2=c

    list = Split("a-b-c", "-", 1) ' 最大分割数 1
    Call PrintArray(list) ' 0=a-b-c

    list = Split("a-b-c", "-", 2) ' 最大分割数 2
    Call PrintArray(list) ' 0=a, 1=b-c

    list = Split("a-b-c", "-", 4) ' 最大分割数 4
    Call PrintArray(list) ' 0=a, 1=b, 2=c
End Sub

Sub PrintArray(list As Variant)
    Dim i As Integer
    For i = LBound(list) To UBound(list)
        Debug.Print(i & "=" & list(i))
    Next
End Sub

Join 関数」を使って配列を区切り文字で結合する


Dim 配列(2) As String
配列(0) = "ああ"
配列(1) = "いい"
配列(2) = "うう"

s = Join(配列, ",")
Debug.Print(s) ' ああ,いい,うう
  • 目次
    • 構文
    • 解説
    • 使用例