Vba: 文字列を配列に分割する方法 (例あり)
VBA を使用して文字列を配列に分割するには、次の基本構文を使用できます。
SubSplitString ()
Dim SingleValue() As String
Dim i As Integer
Dim j As Integer
For i = 2 To 7
SingleValue = Split(Range(" A " & i), " ")
For j = 1 To 2
Cells(i, j + 1).Value = SingleValue(j - 1)
Next j
Next i
End Sub
この特定の例では、各文字列内のスペースに基づいて範囲A2:A7の各文字列を分割し、結果として得られた各文字列の要素をセル範囲B2:B7およびC2:C7に割り当てます。
次の例は、この構文を実際に使用する方法を示しています。
例: VBA を使用して文字列を配列に分割する
Excel に次の文字列リストがあるとします。
各文字列を空白に基づいて分割し、結果として得られる各文字列の要素を新しいセルに割り当てたいとします。
これを行うには、次のマクロを作成できます。
SubSplitString ()
Dim SplitValues() As String
Dim i As Integer
Dim j As Integer
For i = 2 To 7
SplitValues = Split(Range(" A " & i), " ")
For j = 1 To 2
Cells(i, j + 1).Value = SplitValues(j - 1)
Next j
Next i
End Sub
このマクロを実行すると、次の出力が表示されます。
列 B と C には、列 A の各フルネームの姓名が含まれていることに注意してください。
また、VBA Split関数を使用すると、別の区切り文字に基づいて配列を分割できることにも注意してください。
たとえば、次の電子メール リストがあるとします。
@記号が表示される場所に基づいて、各電子メールを配列に分割したいとします。
これを行うには、次のマクロを作成できます。
SubSplitString ()
Dim SplitValues() As String
Dim i As Integer
Dim j As Integer
For i = 2 To 7
SplitValues = Split(Range(" A " & i), " @ ")
For j = 1 To 2
Cells(i, j + 1).Value = SplitValues(j - 1)
Next j
Next i
End Sub
このマクロを実行すると、次の出力が表示されます。
Split関数は、@ 記号に基づいて列 A の各電子メールを分割し、結果のアイテムを列 B と列 C に表示します。
注: VBA Split関数の完全なドキュメントはここにあります。
追加リソース
次のチュートリアルでは、VBA を使用して他の一般的なタスクを実行する方法について説明します。
VBA: 文字列内の文字の出現を数える方法
VBA: 文字列に別の文字列が含まれているかどうかを確認する方法
VBA: 特定のテキストを含むセルを数える方法