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

CSVファイルは「,」で区切られていますし、電話番号、郵便番号、メールアドレス、氏名の姓・名と分割したいことはたくさんあります。

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

Excel VBA で文字列を特定の文字の位置で分割する記録です。

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

VBAsplit

 

< スポンサーリンク >

 

構文

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

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

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

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

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

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

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

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

 

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

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

 

電話番号を市外局番、市内局番、加入者番号で分割します。

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

 

< スポンサーリンク >



サブコンテンツ

このページの先頭へ