マクロ(VBA)
 PR

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です。

わからないところがあれば、メール相談をやっていますのでご連絡ください。

Sponsor link

Excel VBAを勉強するなら「できる大辞典」がおすすめです。

辞書なのでピンポイントで学ぶことができます。

大学時代、2016年版を購入して勉強していましたが相当使いました。

ネットだけでも勉強はできますが、本を読みながらVBAを勉強したい方は購入してください。

amazonで見てみる

ABOUT ME
ねこる
ねこる
管理者
Mac / プログラミング / Excel / マクロ(VBA) / カメラ

調べたり、効率的なことが好きです。

記事URLをコピーしました