0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Excel VBA】Split関数|文字列を分割して配列にする方法と注意点

0
Last updated at Posted at 2025-08-03

この記事ではSplit関数の使い方と注意点について解説します。
他のよく使うVBA関数一覧はこちら。

Split関数の使い方と注意点

Split関数は、文字列を指定した区切り文字で分割して、配列として返す関数です。  
CSVや区切り文字付きデータを処理したいときによく使います。

構文

Split(文字列, 区切り文字 [, 最大分割数] [, 比較方法])
  • 文字列 : 分割対象の文字列
  • 区切り文字(省略可) : 要素を分けるための文字(省略するとスペース" ")
  • 最大分割数(省略可) : 分割される最大数
  • 比較方法(省略可) : 比較方法(大文字小文字を区別するか等)を表す定数
  • 戻り値 : 分割された要素を格納した配列(Variant型)

比較方法には以下の定数を使用します。

定数 説明
vbUseCompareOption -1 Option Compare ステートメントの設定を使用して比較を実行します。
vbBinaryCompare 0 バイナリ比較(大文字小文字を区別する)を実行します。
vbTextCompare 1 テキスト比較(大文字小文字を区別しない)を実行します。

使用例

カンマで文字列を分割する

Sub Sample()
    Dim result As Variant
    result = Split("Abc,Def,Ghi", ",")

    Debug.Print result(0)
    Debug.Print result(1)
    Debug.Print result(2)
End Sub

▶ 出力結果

Abc
Def
Ghi

区切り文字を省略した場合

区切り文字を省略した場合、スペースで分割されます。

Sub Sample()
    Dim result As Variant
    
    result = Split("Abc Def  Ghi,Jkl")
    ' 「Abc」と「Def」の間に半角スペース1つ
    ' 「Def」と「Ghi,Jkl」の間に半角スペース2つ

    Debug.Print result(0)
    Debug.Print result(1)
    Debug.Print result(2)
    Debug.Print result(3)
End Sub

▶ 出力結果

Abc
Def
        ' 「Def」「Ghi,Jkl」間の1つ目と2つめのスペース間の文字列「」
Ghi,Jkl ' カンマでは分割されない

最大分割数を指定する

最大分割数を指定した場合、上限を超える部分は最後の要素にまとめられます。

Sub Sample()
    Dim result As Variant
    result = Split("a,b,c,d", ",", 2)

    Debug.Print result(0)  ' a
    Debug.Print result(1)  ' b,c,d
End Sub

▶ 出力結果

a
b,c,d   ' 上限を超える部分は最後の要素にまとめられる

大文字小文字を区別しない比較方法を指定する

比較方法を省略した場合やバイナリ比較(vbBinaryCompare)を指定した場合、大文字と小文字が区別されます。

Sub Sample()
    Dim result As Variant
    result = Split("A-B-b-C", "b")

    Debug.Print result(0)
    Debug.Print result(1)
End Sub

▶ 出力結果

A-B-    ' Bでは分割されない
-C

テキスト比較(vbTextCompare)を指定することで大文字小文字に区別なく分割することができます。

Sub Sample()
    Dim result As Variant
    result = Split("A-B-b-C", "b", , vbTextCompare)

    Debug.Print result(0)
    Debug.Print result(1)
    Debug.Print result(2)
End Sub

▶ 出力結果

A-
-   ' Bでも分割
-C  ' bで分割

⚠️注意

第1引数は文字列である必要がある

数値など文字列でない値を渡すと、**実行時エラー 13「型が一致しません」**が発生します。

Sub Sample()
    Dim val As Long
    val = 12345
    Debug.Print Split(val, "2") 
End Sub

▶ 出力結果
error.png

引数にNullを渡すとエラーになる

Sub Sample()
    Dim s As Variant
    s = Null
    Debug.Print Split(s, ",") 
End Sub

▶ 出力結果
error_94.png

戻り値は配列(Variant型)

戻り値は1次元の配列として扱えます。
要素をループで取り出すのが基本です。

Sub Sample()
    Dim arr As Variant
    Dim i As Long
    arr = Split("Red,Green,Blue", ",")

    For i = LBound(arr) To UBound(arr)
        Debug.Print arr(i)
    Next
End Sub

▶ 出力結果

Red
Green
Blue

区切り文字省略時に全角スペースでは分割されない

区切り文字省略時にスペースで分割されると述べましたが、
分割は半角スペースのみで、全角スペースでは分割されません。

Sub Sample()
    Dim result As Variant
    
    result = Split("Abc Def  Ghi,Jkl", , vbTextCompare)
    ' 「Abc」と「Def」の間に全角スペース1つ
    ' 「Def」と「Ghi,Jkl」の間に全角スペース2つ

    Debug.Print result(0)
End Sub

▶ 出力結果

Abc Def  Ghi,Jkl

関連するVBA関数

  • Join関数
  • Array関数
  • LBound関数・UBound関数

その他のVBA関数

【Excel VBA】VBAでよく使う関数一覧&基本の使い方

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?