Excelのマクロ(VBA)でSplit関数を使い文字列を分割する方法
今回はマクロ(VBA)のSplit関数について、使い方などを紹介していきます。
文字列の分割はどうやってやるの?
ファイルから文字を読み込んだけど1つのセルに入っちゃう…
こんなお悩みを解消できますので、みていってください!
Excelのマクロ(VBA):Split関数とは
Split関数は、文字列を分割するときに使います。
例えば、「あ,い,う,え,お」という文字列があったとき、
「あ」「い」「う」「え」「お」というように、1単語ごとに分割できるのがSplit関数です。
これは、「,(カンマ)」で区切ってね、と指定することで1単語ごとに分割されます。
Split関数は、ある文字列を指定した区切り文字で分割するってことなんだね!
Excelのマクロ(VBA):Split関数の使い方
では、Split関数の使い方をみていきましょう!
Split関数は、このように使います。
Split(文字列, 区切り文字)
1Dim myArray() As String
2
3myArray = Split("あ,い,う,え,お", ",")
結果
myArray(0):あ
myArray(1):い
myArray(2):う
myArray(3):え
myArray(4):あ
Split関数で区切った後は、上記のように配列で返ってきます。
配列ではない変数にしているとエラーになってしまうので気をつけてね!
今回はカンマで区切っていますが、スペース、コロン(.)など、指定した文字で区切れますので対応範囲は大きいです。
Excelのマクロ(VBA):Split関数の使用例
Split関数を使ったサンプルです。
次のように名前があって、性と名を分けたい場合
Split関数を使ったマクロを実行すると
このように分割することができます。
今回は、半角のスペースでしたが問題なくできていますね。
マクロはこちら
1 Sub split_sample()
2 Dim myArray() As String
3 Dim ws As Worksheet
4
5 Set ws = ThisWorkbook.Worksheets("Sheet1")
6
7 ' 10回ループ
8 For x = 1 To 10
9 myArray = split(ws.Cells(x, 1), " ") ' Split 関数で区切る
10
11 ' 配列の要素数の最大までループ
12 For y = 0 To UBound(myArray)
13 ws.Cells(x, y + 2) = myArray(y) ' 転記
14 Next
15 Next
16 End Sub
- 10個名前があるのでFor文で10回ループ
- Splirt関数で名前を分割し、配列へ
- 配列の要素数をUBoundで取得し、そこまでループ
- 転記
今回はワークシートから文字列を読み込んでいますが、テキストファイルやCSVファイルから読み込むこともあると思います。
そのときは、10回ループしているFor文の回数を変化させ、Split関数の前で文字列を読み込んであげればOKです。
わからないところがあれば、メール相談をやっていますのでご連絡ください。
Excel VBAを勉強するなら「できる大辞典」がおすすめです。
辞書なのでピンポイントで学ぶことができます。大学時代、2016年版を購入して勉強していましたが相当使いました。
ネットだけでも勉強はできますが、本を読みながらVBAを勉強したい方は購入してください。