ラピードアクト株式会社

技術記事:ExcelVBAで仕事を効率化しようVol.9

技術記事:ExcelVBAで仕事を効率化しようVol.9

みなさん、こんにちは。
ITソリューション事業部の林です。

本記事では、ExcelVBAのテクニックを紹介・解説いたします。

今回紹介するのは、「Split関数」です。
Split関数は、文字列操作を行う関数で、一連の文字列を区切り文字で分割するときに使用します。

【目次】

  1. Split関数とは
  2. Split関数の構文
  3. Split関数の使用例
  4. 終わりに

それでは、始めましょう!

Split関数とは

この関数の機能は、「指定した文字列を区切り文字で分割した結果を返す」です。
具体的にどのような感じになるのか、解説いたします。

以下の文字列があったとします。
09:00~18:00

開始時間と終了時間が一つの文字列になっています。
これを「開始時間」と「終了時間」で別々に取り出したい、といったときにSplit関数を使用します。

Split関数の構文

「09:00~18:00」をSplit関数で分割するソースコードです。

09:00」だけ取り出して変数に取得するには以下のとおりです。

Sub ExcelVBA_009()
    Dim Result
    Result = Split("09:00~18:00", "~")(0)
End Sub

18:00」だけ取り出すには以下のように書きます。

Sub ExcelVBA_009()
    Dim Result
    Result = Split("09:00~18:00", "~")(1)
End Sub

Split関数の末尾にある(0)や(1)は要素番号と言い、分割後文字から何番目を取り出すか番号指定します。
この時、最初の文字は必ずゼロから始まりますので注意しましょう。

さて、このSplit関数が本来どのような値を返すかというと、「配列」を返します。
配列とは、以下のような構造になっており、内部に複数の値を持っています。

通常、変数にはひとつの値しか持たせられませんが、配列は複数の値を持ちます。
配列から値を取り出すには要素番号を指定する必要があります。

Split関数に戻りますが、これ自体の構文は以下のとおりです。

Split(文字列, 区切り文字)

Split関数は配列を返しますので、末尾に要素番号(0や1)を加えれば、値だけを取り出すことができるのです。
つまり、「変数 = Split("09:00~18:00", "~")(0)」というコードの処理順を整理すると以下①~③になります。

Split関数の戻り値を代入する変数はVariant型にしておきましょう。
他のデータ型にするとエラーの原因になります。

Split関数の使用例

ここではファイルパスの文字列操作を例にします。

使用例① 文字列を配列に変換して、要素数を調べる
文字列を"\"で区切ったときに、要素がいくつ存在するかわかります。
ここでは配列の最後の要素番号を返すUbound関数を使用します。

Sub ExcelVBA_009_Example1()
    '文字列を配列にする
    Dim Result As Variant
    Result = Split("D:\ラピードアクト\サンプル.txt", "\")
    '配列の最後の要素番号を表示する
    MsgBox UBound(Result)
End Sub

使用例② 文字列を配列に変換して、値を出力する
文字列を"\"で区切って配列に格納し、配列の値をセルに展開します。

Sub ExcelVBA_009_Example2()
    '文字列を配列にする
    Dim Result As Variant
    Result = Split("D:\ラピードアクト\サンプル.txt", "\")
    '配列のすべての要素をセルに書き込む
    Dim Idx As Long
    For Idx = 0 To UBound(Result)
        Cells(Idx + 1, 1).Value = Result(Idx)
    Next
End Sub

使用例③ 文字列を配列に変換して、最後の要素を取り出す
文字列を"\"で区切って配列に格納し、ファイル名を表示します。

Sub ExcelVBA_009_Example3()
    '文字列を配列にする
    Dim Result As Variant
    Result = Split("D:\ラピードアクト\サンプル.txt", "\")
    '配列の最後の要素を表示する
    MsgBox Result(UBound(Result))
End Sub

終わりに

以上、Split関数について解説いたしました。
VBAでデータを加工して扱うには、このような文字列操作関数を覚えておくと大変便利です。
文字列操作関連のテクニックは多くありますが、焦って一度に覚えようとせず、ひとつずつ覚えていきましょう。

それでは、また次回お会いしましょう!