Excel VBA 文字列を特定の文字で分割する-Split関数

CSVファイルなどの「,」で区切られてるものや、メールアドレスの「@」マーク、氏名の姓・名の間にある「スペース」など、特定の文字分割したいことはたくさんあります。

データが少ない場合は手入力でいけますが、データの量が多いと大変だし、間違えることもしょっちゅう。

Excel VBAで文字列を分割するには「Split」関数を使います。

下図は、サンプルデータです。

< スポンサーリンク >





「Split」関数構文

指定された文字列を分割し、一次元配列に返します。

Split(expression, [delimiter, [limit], [Compare]])

expression=必須。文字列と区切り文字が含まれる文字列式。長さ0文字列(“”)の場合、Splitは空の配列、つまり、要素とデータのない配列を返します。

delimiter=省略可能。区切り文字。省略すると半角空白文字(” “)とみなされます。

limit=省略可能。返される文字列の数。-1は、すべての文字列が返されることを示す。

Compare=省略可能。文字列の比較の種類を示す数値。

Compare引数には、次の値を指定できます。

vbBinaryCompare=バイナリ比較を実行。
vbTextCompare=テキスト比較を実行。
vbDatabaseCompare=MicrosoftAccessのみ。データベース内の情報に基づいて比較を実行。

 

VBAで文字列を分割する例

氏名を姓と名で分割します。

Sub test()
    Dim i As Long
    Dim str As Variant

    With ActiveSheet
        For i = 1 To 10
            str = Split(.Cells(i, 1), “ ”)
            .Cells(i, 2).Value = str(0)
            .Cells(i, 3).Value = str(1)
        Next i
    End With
End Sub

VBAsplit

VBAsplit

VBAsplit

 

メールアドレスをユーザー名とドメインで分割します。

Sub test()
    Dim i As Long
    Dim str As Variant

    With ActiveSheet
        For i = 1 To 10
            str = Split(.Cells(i, 1), “@”)
            .Cells(i, 2).Value = str(0)
            .Cells(i, 3).Value = str(1)
        Next i
    End With
End Sub

VBAsplit

VBAsplit

VBAsplit

 

電話番号を市外局番、市内局番、加入者番号で分割します。
※B、C、D列は、セルの書式設定で「文字列」にしています。

Sub test()
    Dim i As Long
    Dim str As Variant

    With ActiveSheet
        For i = 1 To 10
            str = Split(.Cells(i, 1), “-“)
            .Cells(i, 2).Value = str(0)
            .Cells(i, 3).Value = str(1)
            .Cells(i, 4).Value = str(2)
        Next i
    End With
End Sub

VBAsplit

VBAsplit

VBAsplit

 

< スポンサーリンク >※広告先のお問い合わせは広告主様にお願いします