テキストをカンマやスペースなどで区切り配列に格納してデータを加工する方法について説明します。
テキストを何かの文字で区切る場合は「Split関数」を使用します。
カンマ区切りのテキストを配列に格納する方法
Split関数を使用してカンマ区切りのテキストを配列に格納する方法について説明します。
Split関数の構文は下のように記述します。
サンプルでA1セルに「りんご,バナナ,なし,ぶどう,グレープフルーツ,キウイ」と書いてあり、6個の果物の名前が書かれています。
この文字列をカンマで区切って配列に格納していきます。
サンプルマクロで実行している内容
・A1セルの値をSplit関数を使用してカンマで区切って変数「temp」に格納する
・配列の要素の1個目(0)から最大数までを繰り返しし、
値をdebug.printでイミディエイトウィンドウに出力する
Sub sample1()
Dim tmp As Variant
Dim i As Long
'カンマ区切りで配列に格納する
tmp = Split(ActiveSheet.Range("A1"), ",")
'配列0~最大数まで繰り返し
For i = 0 To UBound(tmp)
'配列の値をdebug.printする
Debug.Print tmp(i)
Next i
End Sub
▽最後のEnd Subのところでブレークポイントを貼り、一時停止させた状態です。
ローカルウィンドウ(画面右下)で変数tempの中に0~5までの要素があり、それぞれ果物の名前が格納されているのが分かります。
イミディエイトウィンドウ(画面左下)にはdebug.printで出力された値が6個出力されています。
氏名をスペースで分割する方法
次はA列に氏名が入力されているデータを使用して、Split関数で氏名を分割していきます。
氏名の間には半角スペースがあるので半角スペースで区切って、B列に苗字・C列に名前を出力するマクロを作成します。
サンプルマクロで実行している内容
・2行目~15行目までを繰り返す
・1列目の値をSplitで区切って変数tmpに格納する
・配列の要素数0(1個目)を2列目のB列に出力する
・配列の要素数1(2個目)を3列目のC列に出力する
Sub sample2()
Dim tmp As Variant
Dim i As Long
'2行目~15行目まで繰り返し
For i = 2 To 15
'半角スペースで区切る
tmp = Split(Cells(i, 1), " ")
'苗字をB列に出力する
Cells(i, 2) = tmp(0)
'名前をC列に出力する
Cells(i, 3) = tmp(1)
Next
End Sub
▽マクロ実行後
B列とC列に氏名と名前が出力されました。
※コードのコピー利用について
・コードのコピーは自由におこなっていただけます。
・気を付けて作成はしていますがコードには誤りがある可能性があります。
・自身の環境で動作確認をしていますが、すべての方の環境で同様に動くことは保証できません。
・データの破損等の責任は負いかねますのでご自身の責任のもとお使いください。