【VBA】Split関数で、区切り文字を含む一つの文字列を配列に変換する方法

目次

はじめに

VBAで、"東京/大阪/名古屋/福岡" のように、特定の区切り文字(この場合は /)で区切られた一つの長い文字列を扱う場面はよくあります。このような文字列から、各都市名を個別のデータとして取り出したい場合、どうすればよいでしょうか?

手作業で分割するのは大変ですが、VBAの Split() 関数を使えば、この作業を一瞬で完了させることができます。Split関数は、指定した区切り文字を基準に文字列を分割し、その結果を配列として返してくれる非常に便利な関数です。

この記事では、Split関数の基本的な使い方と、返された配列の活用方法について、分かりやすく解説します。


Split関数を使ったサンプルコード

このマクロは、B2セルに入力された、カンマ(,)で区切られた文字列を分割し、配列に格納します。その後、配列の各要素をC列に順番に書き出します。

完成コード

' Split関数で文字列を配列に分割する
Sub SplitStringToArray()
    
    Dim sourceText As String
    Dim dataArray As Variant
    Dim i As Long
    
    '--- 1. 分割したい元の文字列を準備 ---
    ' B2セルの値を取得
    sourceText = Worksheets("Sheet1").Range("B2").Value
    
    '--- 2. Split関数で、カンマを基準に文字列を分割 ---
    dataArray = Split(sourceText, ",")
    
    '--- 3. 分割された配列の各要素をセルに書き出す ---
    ' Splitが返す配列は0始まりなので、LBound/UBoundを使うと確実
    For i = LBound(dataArray) To UBound(dataArray)
        ' C3セルから下方向に書き出し
        Worksheets("Sheet1").Range("C3").Offset(i, 0).Value = dataArray(i)
    Next i
    
    MsgBox "文字列の分割が完了しました。"

End Sub

実行前の準備

  1. Sheet1B2 セルに、"商品A,商品B,商品C,商品D" のような、カンマで区切られた文字列を入力しておきます。

コードの解説

dataArray = Split(sourceText, ",")

これが Split関数の核心部分です。

Split(対象の文字列, 区切り文字)

  • 第1引数 (sourceText): 分割したい文字列が入った変数や、文字列そのものを指定します。
  • 第2引数 (,): 何を基準に分割するか、区切り文字(デリミタ)を文字列で指定します。この例ではカンマ , を指定していますが、スラッシュ / や、タブ vbTab など、任意の文字列を指定できます。

Split関数は、分割された文字列を格納したVariant型の配列を返します。配列のインデックスは、デフォルトで 0 から始まります。

For i = LBound(dataArray) To UBound(dataArray)

Split関数が返した配列をループで処理しています。LBound(最小インデックス)とUBound(最大インデックス)を使うことで、分割後の要素数がいくつであっても、全ての要素を確実に取り出すことができます。


まとめ

今回は、VBAの Split関数を使って、区切り文字で連結された一つの文字列を、簡単に配列に変換する方法を解説しました。

  • Split(文字列, 区切り文字) の構文で、文字列を配列に分割できる。
  • 返される配列は0始まりVariant型

CSVデータのようにカンマで区切られた一行のデータや、複数のキーワードが特定の記号で連結された文字列をパース(解析)する際に、Split関数は絶大な威力を発揮します。VBAでの文字列操作における必須のテクニックですので、ぜひ覚えておきましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次