【Excel VBA】Split関数で文字列を区切る方法!配列作成も!

【Excel VBA】Split関数で文字列を区切る方法!配列作成も!

Excel VBAを使って、文字列を特定の区切り文字で分割したいことはありませんか?

けど、そんな中で悩むことは、

  • Split関数の基本的な使い方がわからない
  • 複数の文字で区切る方法が知りたい
  • 分割したデータを配列として扱いたい

ですよね。

今回はそんなお悩みを解決する

  • Split関数の基本的な使い方
  • 区切り文字を指定した分割
  • 分割したデータを配列として活用する方法

についてまとめます!

Split関数を使った文字列分割の完成イメージ

VBA の Split関数を使うことで、文字列を特定の区切り文字で分割し、配列として取得できます。

例えば、

POINT
  • “Apple,Orange,Banana” をカンマ , で区切って配列にする
  • 改行 vbCrLf を使って複数行のデータを分割する
  • スペース " " やハイフン "-" で区切る
などの操作が可能です。

Split関数の基本

基本的な使い方

構文

Split(文字列, 区切り文字 [, 制限 [, 比較モード]])
引数 説明
文字列 分割する対象の文字列
区切り文字 文字列を分割する際の区切り文字(デフォルトは " " スペース)
制限 分割する最大要素数(省略可)
比較モード 比較方法(vbBinaryCompare または vbTextCompare

 

 

Split関数の使用例を見てみましょう。

 

例1: カンマで区切る

Sub ExampleSplit()
    Dim fruits As Variant
    fruits = Split("Apple,Orange,Banana", ",")
    MsgBox fruits(0) ' 出力: Apple
    MsgBox fruits(1) ' 出力: Orange
    MsgBox fruits(2) ' 出力: Banana
End Sub

結果

入力文字列 Apple,Orange,Banana
区切り文字 ,
結果 Apple Orange Banana

例2: スペースで区切る

Dim words As Variant
words = Split("Hello World VBA", " ")

この場合、words(0) = "Hello"words(1) = "World"words(2) = "VBA" になります。

入力文字列 Hello World VBA
区切り文字  (スペース)
結果 Hello World VBA

 例3 改行で区切る

Dim lines As Variant
lines = Split("Line1" & vbCrLf & "Line2" & vbCrLf & "Line3", vbCrLf)

結果

入力文字列 Line1
Line2
Line3
区切り文字  (改行)
結果 Line1 Line2 Line3

 例4 分割回数を制限する

3つの要素だけ取得したい場合は第三引数に制限したい回数の数値をいれます。

Dim data As Variant
Dim text As String
text = "One,Two,Three,Four,Five"
data = Split(text, ",", 3)

 

結果

区切り文字 ,
制限 3
結果 One Two Three,Four,Five

続いて応用編です。

分割したデータを配列として活用する

Forループで配列の要素を処理する

Forループで配列の要素を処理するサンプル例です。

Sub LoopSplit()
    Dim items As Variant
    Dim i As Integer
    items = Split("Red,Blue,Green", ",")
    
    For i = LBound(items) To UBound(items)
        Debug.Print items(i) ' 各要素を出力
    Next i
End Sub
items = Split("Red,Blue,Green", ",")

文字列をカンマで分割し、配列に格納しています。

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

配列の最小インデックス(0)から最大インデックス(2)までループします。

Debug.Print items(i)

各要素をイミディエイトウィンドウに出力します。

セルに分割したデータを出力する

Sub SplitToCells()
    Dim items As Variant
    Dim i As Integer
    items = Split("Dog,Cat,Bird", ",")
    
    For i = LBound(items) To UBound(items)
        Cells(i + 1, 1).Value = items(i)
    Next i
End Sub

 

こちらはセルに直接データが出力されます。

結果

i + 1 Cells(i+1, 1) items(i) 結果
1 Cells(1,1) = A1 Dog A1に”Dog”を出力
2 Cells(2,1) = A2 Cat A2に”Cat”を出力
3 Cells(3,1) = A3 Bird A3に”Bird”を出力

さいごに

いかがでしょうか。

今回は、

  • Split 関数の基本的な使い方
  • 区切り文字を指定した分割方法
  • 分割後のデータを配列として活用する方法

についてまとめました。

Split 関数を使えば、CSVデータの解析やログデータの処理など、さまざまなシナリオで活用できます。ぜひ試してみてください!



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。






コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA ImageChange Image