文字列の内容 Split関数

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関数について記載させて頂きました。

少しでも皆様の参考になれば幸いです。

Published by

不明 のアバター

yuuya

 現在フリーランスとして仕事を行っております。 新卒でIT企業に入社して、某ECサイトの開発、某銀行の滞納者管理システムの開発、某携帯キャリアのアクセス位置制御システムの開発などの色々なシステム開発に携わって参りました。 体調を崩して他業種に転職をしましたがIT技術を生かし、業務の効率化を提案して2時間かかる作業を2分で終らせられる様に作業の自動化などを行ってきました。  私は働きすぎて体を壊したので私の知識で、少しでも皆様の帰宅時間を速める事が出来るなら幸いです。

コメントを残す