[VBA] Split関数で文字列を分割します

Split関数で文字列を区切り文字で分割します

 皆さん、今日も元気に VBA してますか~?
 VBA ハイマスターこばとちゃんも毎日元気に VBA してますよ。
 今回は VBA の Split関数 を使って文字列を切り分ける方法を勉強しましょう。

 Split は文字列をデリミタで区切って、それぞれを 1 次元配列に格納します。

Split(文字列, [デリミタ, [分割数, [,比較方法])

 「デリミタ」というのは「ここが分割する場所だよ」という目印になる記号のことです。何を指定してもいいんだけど、普通は「、」とか「, 」とか、半角スペースを指定します。「分割数」と「比較方法」については、滅多に使う機会もないし、説明するのが面倒くさいので、ここは省略しちゃってください。要するに Split関数は

Split(文字列, デリミタ)

で使うものだと覚えましょう。デリミタを省略すると半角スペースを指定したものとみなされます。

 それでは今回のサンプルコードです♪

'VBA Split関数のサンプルコード-1

Sub Split_String()

  Dim i As Integer
  Dim mystr As String
  Dim myarray() As String

  mystr = "こばとちゃんは、今日も元気に、飛び回っています"

  'Split関数を使って文字列を「、」で分割
  myarray = Split(mystr, "、")

  For i = 0 To UBound(myarray)
    Debug.Print myarray(i)
  Next i

End Sub

 分割された文字を格納するための変数は配列変数にしておくことを忘れないようにしてください。上のコードでは myarray() を配列変数として宣言しています。デリミタは「、」です。サンプルコードを実行すると

 こばとちゃんは
 今日も元気に
 飛び回っています

と表示されます。

 もうひとつサンプルコードを作っておきましょう。
 まずは、こんなワークシートを用意してくださいな。

 Split関数 名前と苗字の分割1

 図のように、A 列に氏名が入力されていて、苗字と名前が半角スペースで区切られている場合は、次のマクロで苗字と名前を B 列と C 列に分割することができます。

'VBA Split関数のサンプルコード-2

Sub Split_Name()

  Dim i As Long
  Dim ect As Long, rct As Long
  Dim mystr As String
  Dim myname As Variant

  'シートの行数を数えます
  ect = ActiveSheet.Rows.Count

  'A列の最終行を得ます
  rct = Cells(ect, 1).End(xlUp).Row

  'Split関数を使って2行目から最終行まで苗字と名前を分割します
  For i = 2 To rct
    myname = Split(Cells(i, 1))
    Cells(i, 2) = myname(0)
    Cells(i, 3) = myname(1)
  Next i

End Sub

 このマクロを実行すると、B 列に苗字、C 列に名前のデータが入ります。

 Split関数 名前と苗字の分割(マクロ実行後)
 ≫ メニューに戻って他の記事も読むべきです。ぜひともそうすべきなのです。

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)