PR

【ExcelVBA】文字列を分割して配列に格納する方法(Sprit関数)

ExcelVBA_テキストを配列に格納する-アイキャッチ その他

テキストをカンマやスペースなどで区切り配列に格納してデータを加工する方法について説明します。
テキストを何かの文字で区切る場合は「Split関数」を使用します。

スポンサーリンク

カンマ区切りのテキストを配列に格納する方法

Split関数を使用してカンマ区切りのテキストを配列に格納する方法について説明します。

Split関数の構文は下のように記述します。

Split(対象の文字列,区切る文字)

サンプルでA1セルに「りんご,バナナ,なし,ぶどう,グレープフルーツ,キウイ」と書いてあり、6個の果物の名前が書かれています。
この文字列をカンマで区切って配列に格納していきます。

ExcelVBA_テキストを配列に格納する_A1セルのテキスト

サンプルマクロで実行している内容
・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個出力されています。

ExcelVBA_テキストを配列に格納する_VBE画面_debugprint
スポンサーリンク

氏名をスペースで分割する方法

次はA列に氏名が入力されているデータを使用して、Split関数で氏名を分割していきます。

氏名の間には半角スペースがあるので半角スペースで区切って、B列に苗字・C列に名前を出力するマクロを作成します。

ExcelVBA_テキストを配列に格納する_氏名分割前

サンプルマクロで実行している内容
・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列に氏名と名前が出力されました。

ExcelVBA_テキストを配列に格納する_氏名分割後
スポンサーリンク

※コードのコピー利用について

・コードのコピーは自由におこなっていただけます。
・気を付けて作成はしていますがコードには誤りがある可能性があります。
・自身の環境で動作確認をしていますが、すべての方の環境で同様に動くことは保証できません。
・データの破損等の責任は負いかねますのでご自身の責任のもとお使いください。

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