分割(文字列や配列の分割)
Excel VBAで「文字列を分割したい」「配列を分割して処理したい」という場面はよくあります。代表的なのは Split 関数 を使った文字列分割です。初心者向けに、コード例とテンプレートをかみ砕いて説明します。
基本の考え方
- Split関数:
Split(文字列, 区切り文字)
→ 文字列を区切り文字で分割し、配列に格納。 - UBound/LBound: 配列の範囲を確認してループ処理。
- 用途: CSVデータの分割、複数値の取り出し、文字列解析。
テンプレ1:カンマ区切りの文字列を分割
Sub Split_Comma()
Dim text As String
text = "りんご,みかん,バナナ,ぶどう"
Dim arr As Variant
arr = Split(text, ",")
Dim i As Long
For i = LBound(arr) To UBound(arr)
Debug.Print arr(i)
Next i
End Sub
VB- 結果:
りんご みかん バナナ ぶどう
テンプレ2:スペース区切りの文字列を分割
Sub Split_Space()
Dim text As String
text = "Tokyo Osaka Nagoya Fukuoka"
Dim arr As Variant
arr = Split(text, " ")
Dim i As Long
For i = LBound(arr) To UBound(arr)
Debug.Print arr(i)
Next i
End Sub
VB- 結果:
Tokyo Osaka Nagoya Fukuoka
テンプレ3:改行で分割
Sub Split_NewLine()
Dim text As String
text = "A社" & vbCrLf & "B社" & vbCrLf & "C社"
Dim arr As Variant
arr = Split(text, vbCrLf)
Dim i As Long
For i = LBound(arr) To UBound(arr)
Debug.Print arr(i)
Next i
End Sub
VB- 結果:
A社 B社 C社
テンプレ4:分割した配列をシートに書き出す
Sub Split_ToSheet()
Dim text As String
text = "100,200,300,400"
Dim arr As Variant
arr = Split(text, ",")
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim i As Long
For i = LBound(arr) To UBound(arr)
ws.Cells(i + 1, 1).Value = arr(i)
Next i
End Sub
VB- ポイント: 分割した配列をシートに展開できる。
テンプレ5:複数区切り文字に対応(ReplaceとSplit)
Sub Split_MultiDelimiter()
Dim text As String
text = "りんご,みかん;バナナ|ぶどう"
' 区切り文字を統一
text = Replace(text, ";", ",")
text = Replace(text, "|", ",")
Dim arr As Variant
arr = Split(text, ",")
Dim i As Long
For i = LBound(arr) To UBound(arr)
Debug.Print arr(i)
Next i
End Sub
VB- ポイント: 区切り文字が複数ある場合は、まず
Replaceで統一してからSplit。
例題で練習
'例1:カンマ区切りで分割
Sub Example1()
Split_Comma
End Sub
'例2:スペース区切りで分割
Sub Example2()
Split_Space
End Sub
'例3:改行で分割
Sub Example3()
Split_NewLine
End Sub
'例4:分割した配列をシートに書き出す
Sub Example4()
Split_ToSheet
End Sub
'例5:複数区切り文字に対応
Sub Example5()
Split_MultiDelimiter
End Sub
VB初心者向けポイント
- Splitは一次元配列を返す: ループで取り出すのが基本。
- 区切り文字を工夫:
","や" "やvbCrLfなど。 - 複数区切り文字:
Replaceで統一してからSplit。 - シート展開も簡単: 配列をCellsに書き出せば表にできる。
- UBound/LBoundで範囲確認: 配列のサイズを必ず確認してループ。
