Split関数:文字列を指定の区切り文字で分割し配列の要素に格納する

Split 関数は Excel VBA で用意されている関数の一つで、引数に指定した文字列を指定した区切り文字で分割し、分割された値を要素とする配列を作成します。ここでは Excel VBA における Split 関数の使い方について解説します。

(Last modified: )

Split関数の定義と使い方

Split 関数は引数に指定した文字列を指定した区切り文字で分割し、それぞれの値を要素に格納した配列を返します。

Split(expression)

1 番目の引数に対象となる文字列を指定します。省略可能な 2 番目の引数に区切り文字(デリミタ)を文字列で指定します。省略した場合は空白文字 " " が指定されたとみなされます。

次の例を見てください。

Dim weekArray() As String

weekArray = Split("月曜 火曜 水曜")
Debug.Print weekArray(0)  '月曜
Debug.Print weekArray(1)  '火曜
Debug.Print weekArray(2)  '水曜

Split 関数の 1 番目の引数に指定した文字列を空白文字を区切り文字として分割し、分割された各部分文字列を要素として持つ配列を作成します。配列の各要素をイミディエイトウィンドウに出力すると "月曜" "火曜" "水曜" と出力されます。

分割する数

省略可能な 3 番目の引数にはいくつの部分文字列に分割するのかを指定することができます。デフォルトの値は -1 でこの場合は分割する数に制限はありません。例えば 2 を指定した場合は対象の文字列の中に区切り文字がいくつあっても、最初の区切り文字のところで 2 つ分割されるだけで残りの文字列は分割されません。

次の例を見てください。

Dim weekArray() As String

weekArray = Split("月曜 火曜 水曜", " ", 2)
Debug.Print weekArray(0)  '月曜
Debug.Print weekArray(1)  '火曜 水曜

分割する数が 2 に設定されているので、 Split 関数を使って取得した配列の各要素をイミディエイトウィンドウに出力すると "月曜" "火曜 水曜" と出力されます。

区切り文字と一致しているかどうかの比較方法

省略可能な 4 番目の引数には区切り文字と一致しているかどうかの比較方法を指定することができます。指定できる値は次の通りです。

定数説明
vbUseCompareOption-1Option Compare ステートメントの設定を使用して比較を実行します
vbBinaryCompare0バイナリ比較を実行します
vbTextCompare1テキスト比較を実行します
vbDatabaseCompare2Microsoft Access のみ。 データベース内の情報に基づいて比較を実行します

デフォルトの値は vbBinaryCompare です。なお vbUseCompareOption を指定するとエラーとなりました。現在は使用できない可能性があります。

サンプルコード

それでは簡単なサンプルを作成して試してみます。

Option Explicit

Sub Split関数()
    Dim prefArray() As String
    Dim i As Integer

    prefArray = Split(Range("B3").Value, ",")

    For i = 0 To 3
        Cells(i + 6, 2).Value = prefArray(i)
    Next i
End Sub

Split関数の定義と使い方(1)

このプログラムを実行すると Split 関数を使って B3 セルに入力されている文字列を区切り文字 "," で分割し、それぞれの部分文字列を要素として持つ配列を作成します。そのあとで B6 セル から B9 セルに配列の各要素の値を代入します。

Split関数の定義と使い方(2)

-- --

Excel VBA における Split 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。