Split関数とは
Split関数は、指定された区切り文字で文字列を分割して配列に格納するVBAの関数です。以下は、Split関数の使用例です。
例1:コンマで区切られた文字列を分割する
Sub SplitExample1()
Dim str As String
Dim arr As Variant
' 文字列を指定
str = "apple,banana,orange"
' 区切り文字を指定して分割
arr = Split(str, ",")
' 結果を表示
For i = 0 To UBound(arr)
Debug.Print arr(i)
Next i
End Sub
このコードでは、文字列 “apple,banana,orange” をコンマで分割して、配列 arr に格納しています。Split関数の第1引数には対象の文字列を、第2引数には区切り文字を指定しています。配列の要素には、各区切り文字で分割された文字列が格納されています。
例2:スペースで区切られた文字列を分割する
Sub SplitExample2()
Dim str As String
Dim arr As Variant
' 文字列を指定
str = "apple banana orange"
' 区切り文字を指定して分割
arr = Split(str)
' 結果を表示
For i = 0 To UBound(arr)
Debug.Print arr(i)
Next i
End Sub
このコードでは、文字列 “apple banana orange” をスペースで分割して、配列 arr に格納しています。Split関数の第2引数を省略すると、スペースが区切り文字として使用されます。
例3:セミコロンと改行で区切られた文字列を分割する
Sub SplitExample3()
Dim str As String
Dim arr As Variant
' 文字列を指定
str = "apple;banana;orange" & vbNewLine & "grape;melon;peach"
' 区切り文字を指定して分割
arr = Split(str, ";" & vbNewLine)
' 結果を表示
For i = 0 To UBound(arr)
Debug.Print arr(i)
Next i
End Sub
このコードでは、文字列 “apple;banana;orange” と “grape;melon;peach” をセミコロンと改行で分割して、配列 arr に格納しています。Split関数の第2引数には、セミコロンと改行を連結した文字列を指定しています。vb改行
Split関数:文字列を分割する
・Split関数
構文:Split(元の文字列 , 区切り文字)
⇒戻り値は配列で返される。配列はバリアント型変数か動的配列で宣言する
・配列要素はLBound関数(小さな要素数)とUBound関数(大きな要素数)を使用
For i = LBound(配列) To UBound(配列)
n=配列(i)
next
例文
このVBAコードは、指定したセル範囲内の文字列を空白(全角スペース)で分割し、分割された各要素を別々のセルに配置するものです。
Sub 文字列の分割()
'変数の宣言
Dim a As Long 'ループ用変数
Dim b As Long 'ループ用変数
Dim rng As Variant '分割した文字列を格納する配列
Dim i As Long 'ループ用変数
'開始行を指定
a = 2
'無限ループ
Do
'セルの文字列をスペースで分割し、配列に格納
rng = Split(Cells(a, 2), " ")
'配列の要素を新しい列に出力
i = 0
For i = LBound(rng) To UBound(rng)
Cells(a, 3 + i) = rng(i)
Next i
'次の行に移動
a = a + 1
'次のセルが空欄の場合はループを終了
If Cells(a, 2) = "" Then
Exit Do
End If
Loop
'処理が完了したことを知らせるメッセージボックスを表示
MsgBox "完了"
End Sub
解説
スクリプトの最初に、2番目の行から処理を開始するように変数aに値2が代入されます。
その後、Doループが開始されます。このループでは、まず、セルB2の文字列を” ”で区切って配列rngに格納します。Split関数は、指定された区切り文字で文字列を分割し、分割された文字列を配列として返します。
その後、配列rngの要素を新しい列に順番に出力します。Forループで、配列rngの要素をすべて出力するまで繰り返します。iは、配列rngの最初の要素であるLBound(rng)から最後の要素であるUBound(rng)まで繰り返し処理を行います。Cells関数を使用して、出力先のセルを指定し、配列rngのi番目の要素を出力します。
最後に、変数aに1を加算して、次の行に移動します。もし、次の行の2列目のセルに値がなければ、ループを終了します。
このコードは、複数の列に分割された文字列を1つの列にまとめることができます。また、分割された各要素を他のセルにコピーするためにも使用できます。
コメント