Split関数は文字列を指定の文字で分割して、分割した文字列を1次元配列に格納します。
ファイルから取得した文字列の内容を調べたい時などに利用します。
Splitの構文
Split(式, [ 区切り 記号 , [ limit, [ compare ]]])
Split(文字列, [区切りたい文字, [返す要素数, [区切り文字の比較方法]]])
[]内は省略可能です。
Split関数は配列を返すので、配列を宣言する必要があります。
Split関数の使用例
・Split関数内に文字列を設定
・Split関数内に文字列が無い場合
・Split関数内に区切りたい文字列を設定
・Split関数内に返す要数を設定
・Split関数内に区切り文字の比較方法を設定
・セルから文字列を取得してセルに設定
・繰り返し処理(文字列、区切り文字)
の内容で説明していきます。
Split関数内に文字列を直接設定
Sub Split1()
Dim str() As String
str = Split("aaa bbb ccc")
MsgBox Join(str, vbLf)
End Sub
区切り文字を指定していない場合は” “で判定して配列に格納します。
Join関数を利用して配列に格納している文字列の間に改行を設定しています。
Join関数の内容がご不明な場合は文字列の内容 Join関数を確認してください。

Split関数で”aaa bbb ccc”が” “毎に分割されて、strの配列に格納されました。

Join関数で配列の要素の間に改行を結合させて表示しています。
Sub Split2()
MsgBox Join(Split("aaa bbb ccc"), vbLf)
End Sub
この様な記載も可能です。
Split関数内に文字列が無い場合
Sub Split3()
Dim str() As String
str = Split("")
MsgBox Join(str, vbLf)
End Sub

Split関数内に文字列がないので何も表示されません。
Split関数内に区切りたい文字列を設定
Sub Split4()
Dim str() As String
str = Split("aaa bbb_ccc", "_")
MsgBox Join(str, vbLf)
End Sub
Split関数内で区切り文字を”_”で設定します。

Split関数内の文字列にbとcの間に”_”があるので、分割して配列に格納されました。

区切り文字が”_”のため” “は判断されません。
Split関数内に返す要素数を設定
Sub Split5()
Dim str() As String
str = Split("aaa_bbb_ccc", "_", 2)
MsgBox Join(str, vbLf)
End Sub
Split関数内で”_”が文字列の中に2つあります。
返す要素数を2に設定しています。

配列の要素数を2で設定したので、1つ目の”_”で区切られ配列に格納されました。

ちなみに返す要素数を-1にするとすべて返します。
区切り文字を省略した場合は” “で判定されます。
Sub Split6()
Dim str() As String
str = Split("aaa bbb ccc", , 2)
MsgBox Join(str, vbLf)
End Sub

Split関数内に区切り文字の比較方法を設定
比較方法ですが、大文字小文字を比較するしないの設定が出来ます。
0 or vbBinaryCompare で大文字小文字を比較します。
Sub Split7()
Dim str() As String
str = Split("aaaebbbEccc", "E", , 0)
MsgBox Join(str, vbLf)
End Sub
Sub Split8()
Dim str() As String
str = Split("aaaebbbEccc", "E", , vbBinaryCompare)
MsgBox Join(str, vbLf)
End Sub
aとbの間にe、bとcの間にEがあります。
区切り文字は”E”です。

“E”で判定された部分で分割されて、配列に格納されています。

1 or vbTextCompare で大文字小文字を比較しません。
Sub Split9()
Dim str() As String
str = Split("aaaebbbEccc", "E", , 1)
MsgBox Join(str, vbLf)
End Sub
Sub Split10()
Dim str() As String
str = Split("aaaebbbEccc", "E", , vbTextCompare)
MsgBox Join(str, vbLf)
End Sub
aとbの間にe、bとcの間にEがあります。
区切り文字は”E”です。

“e”と”E”で判定された部分で分割されて、配列に格納されています。

セルから文字列を取得してセルに設定

B2の文字列とC2の区切り文字を取得して配列の内容をD2に表示させます。
Sub Split11()
Dim str() As String
Dim kugiri, moji As String
'セルから文字列を取得
moji = Cells(2, 2)
'セルから区切り文字を取得
kugiri = Cells(2, 3)
'Splitで配列に格納
str = Split(moji, kugiri)
'配列の内容をセルに表示
Cells(2, 4) = Join(str, vbLf)
End Sub

配列の内容がD2に表示されました。
繰り返し処理(文字列、区切り文字)

B列の文字列とC列の区切り文字を取得して配列の内容をD列に表示させます。
C5には” “を入力していて、C6には空白です。
Sub Split12()
Dim str() As String
Dim kugiri, moji As String
Dim i As Integer
i = 2
Do While Cells(i, 2) <> ""
'セルから文字列を取得
moji = Cells(i, 2)
'セルから区切り文字を取得
kugiri = Cells(i, 3)
'Splitで配列に格納
str = Split(moji, kugiri)
'配列の内容をセルに表示
Cells(i, 4) = Join(str, vbLf)
i = i + 1
Loop
End Sub
B列が空白になるまで繰り返し処理を行っています。

配列の内容がD列に表示されます。
区切り文字をセルに空白で設定しているの場合は、そのまま表示されます。
今回はSplit関数について記載させて頂きました。
少しでも皆様の参考になれば幸いです。