文字列を分割する Split()【Excel VBA】
Excel VBAで文字列を分割する場合はSplit()関数を使い、 分割された結果は配列に格納されます。
区切り文字としてカンマやタブ、改行など任意の文字を指定するこができ、 指定しない場合はスペースで分割されます。
Split()関数の書式
Split()関数は次のように記述します。
Split(分割される文字列, 区切り文字)
具体的には次のようになります。
Split(str, ",") 'カンマ区切り
Split(str, vbLf) '改行区切り
Split(str, vbTab) 'タブ区切り
Split(str) 'スペース区切り(デフォルト)
改行区切りの場合は、区切り文字に「vbLf」を指定します。 タブ区切りの場合は、区切り文字に「vbTab」を指定します。
文字列をカンマで分割
次のコードはカンマで文字列を分割するサンプルプログラムです。
Variant型の変数を用意し、その変数にSplit()関数の結果を格納しています。
Private Sub test()
Dim str As String
Dim arr As Variant
Dim i As Long
str = "a,b,c"
'カンマ区切り
arr = Split(str, ",")
For i = 0 To UBound(arr)
Debug.Print i & ": " & arr(i)
Next i
End Sub
'実行結果
0: a
1: b
2: c
分割数を指定する
区切り文字の後に分割数を指定することで、 文字列を分割する上限数を指定できます。
分割数を2と指定すると、最大2つの文字列に分割され、 2番目以降の区切り文字は無視されます。
サンプルコードは次の通りです。
Private Sub test()
Dim str As String
Dim arr As Variant
Dim i As Long
str = "a,b,c,d"
arr = Split(str, ",", 2)
For i = 0 To UBound(arr)
Debug.Print i & ": " & arr(i)
Next i
End Sub
'実行結果
0: a
1: b,c,d
上のコードでは、分割数を「2」と指定しましたが、 もし「3」と指定した場合の実行結果は次のように3つに分割されます。
0: a
1: b
2: c,d