更新日:、 作成日:
VBA Split 関数:文字列を分割して配列にする
はじめに
Excel VBA マクロの Split 関数から文字列を分割して配列にする方法を紹介します。
Split 関数は、文字列を区切り文字で分割して配列に変換します。
A,B,C のカンマ区切りの文字列なら A B C の配列に変換できます。
カンマ区切りの文字列を配列に分割したいときに使用します。
Split 関数の引数と戻り値
Split(文字列)
半角スペースで区切られた文字列を分割して配列に変換します。
Split(文字列, 区切り文字, 最大分割数, 比較モード)
指定した区切り文字で分割します。最大分割数で分割する数を指定できます。比較モードで大文字と小文字を区別するか指定できます。
引数「文字列」 | 文字列を指定します。 |
引数「区切り文字」 | 省略できます。分割する区切り文字を指定します。 |
引数「最大分割数」 | 省略できます。区切り文字で分割する最大数を指定します。 |
引数「比較モード」 | 省略できます。引数「区切り文字」の大文字と小文字を区別して検索するかを指定します。 |
戻り値の型 | 文字列型の配列 (String) |
引数「比較モード」
単位 | 説明 |
vbBinaryCompare (既定) | 「大文字と小文字」、「半角と全角」、「ひらがなとカタカナ」を区別する。 |
vbTextCompare | 区別しない。 |
解説
戻り値を受け取る変数は、String 型の動的配列か Variant 型である必要があります。Variant 型の動的配列だと「エラー 13 型が一致しません。」が発生します。
作成される配列は動的配列で、最小インデックスは 0 からスタートします。
引数「区切り文字」を省略したときは半角スペース " " で分割します。
引数「区切り文字」が見つからないときは、要素数が 1 つの配列を返します。配列の最初の要素に引数「文字列」がそのまま入っています。
引数「区切り文字」が空文字 "" なら、要素数が 1 つの配列を返します。配列の最初の要素に引数「文字列」がそのまま入っています。
引数「最大分割数」を省略したときは、引数「区切り文字」ですべて分割した配列を返します。これは -1 を指定したときと同じです。
引数「最大分割数」が 1 なら、要素数が 1 つの配列を返します。配列の最初の要素に引数「文字列」がそのまま入っています。
引数「最大分割数」に 2 なら、要素数が 2 つの配列を返します。最初に見つかった区切り文字の位置で分割されます。
スポンサーリンク
使用例
Split 関数の使用例を紹介します。
文字列を分割して配列にする
文字列を分割して配列にします。
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-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) ' ああ,いい,うう