【VBA道場】#29 文字列を分割する

ExcelVBA

【VBA道場】#29 文字列を分割する



問題

A列に記入されている名前を苗字(B列)と名前(C列)に分割せよ。

 

完成見本

 

解答

Sub vba_doujyou_29()

Dim i As Long

'1~10行目まで繰り返す
For i = 1 To 10

    'A2のセルに、苗字を入れる
    Cells(i, 2) = Split(Cells(i, 1), " ")(0)

    'A3のセルに、名前を入れる
    Cells(i, 3) = Split(Cells(i, 1), " ")(1)

Next i

End Sub

サンプルファイル(マクロ無)

マクロなしのファイルはこちらからご利用いただけます。

 

サンプルファイル(マクロ有)

今回のマクロはこちらからダウンロードしてご使用いただけます。

 

解説

Split(文字列,文字区切りを識別する文字列):区切り文字で文字を分割する

今回はスペースで区切られた文字を分割してみました。
文字を分割する際は「Split関数」を使用します。

 

Split関数は以下のように指定します。

Split(文字列,文字区切りを識別する文字列)

 

最初の文字列は、区切る前の区切り文字も含めた文字列を入力します。
今回の場合は「山田 太郎」などですね。

 

次に、文字を区切りを識別する文字列を入れます。
今回の場合は「 (スペース)」を指定します。
他にも、「,(カンマ)」などを指定することがあります。

 

では、次にこのSplit関数がどのように分割されるのかを見ていきましょう。

今回は、「,(カンマ)」で区切られた文字を分割する場合を見ていきます。

 

「ABC,123,Hello,こんにちは」という文字列があった場合、まずはカンマの部分で分割されます。

そして、図のように1つずつの箱に入れます。
これを「配列」と呼びます。

 

配列には1つずつ名前がついており、左から順番に「0,1,2,3…」となっています。
配列の中身を取り出す場合は、この番号を指定してあげれば良いというわけです。

 

では実際に今回の例を見てみましょう。
今回は「 (空白)」で文字を分割しました。

A列の値を「 (空白)」で区切ります。

Split(Cells(i, 1), " ")

 

分割した文字は配列に入ります。
そして配列の番号を指定し、その内容をセルに表示しています。

  'A2のセルに、苗字を入れる
    Cells(i, 2) = Split(Cells(i, 1), " ")(0)

    'A3のセルに、名前を入れる
    Cells(i, 3) = Split(Cells(i, 1), " ")(1)

後ろのカッコの数字が、配列の箱の番号になります。

 

今回はそれが10行あるので繰り返し処理を組み合わせました。

'1~10行目まで繰り返す
For i = 1 To 10

    'A2のセルに、苗字を入れる
    Cells(i, 2) = Split(Cells(i, 1), " ")(0)

    'A3のセルに、名前を入れる
    Cells(i, 3) = Split(Cells(i, 1), " ")(1)

Next i

 

おわりに

今回はSplit関数について学習しました。
Split関数は、CSVの読み取りなどで非常によく使用します。

しっかりと覚えておきましょう!
今日はここまで。

 

おすすめ参考書

Amazon

たった1秒で仕事が片付くExcel自動化の教科書

いちばんやさしいExcelVBAの教本

ExcelVBA逆引き辞典 パーフェクト

楽天

いちばんやさしいExcelVBA

 

 

すらすら読めるExcelVBA

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

スラスラ読めるExcel VBAふりがなプログラミング [ リブロワークス ]
価格:2035円(税込、送料無料) (2021/4/22時点)

楽天で購入

 

 

 

VBA逆引き大辞典

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

Excel VBA逆引き辞典パーフェクト第3版 [ 田中亨 ]
価格:2838円(税込、送料無料) (2021/4/22時点)

楽天で購入

 

 

タイトルとURLをコピーしました