【Excel VBA】Splitしたと同時に値を取得する方法を紹介【備忘録】

Excel
スポンサーリンク

今回はSplitしたと同時に値を取得する方法を備忘録も兼ねて紹介したいと思います。

スポンサーリンク

Splitについてざっくり紹介

通常、Splitを使用すると指定の文字列を特定の文字で区切った配列が返ってきます

Sub test_Split()

    Dim ary_target_str()        As String
    Dim target_str              As String
    Dim split_str               As String
    
    target_str = "2023/12/30"
    
    '配列ary_target_strに変数target_strを「/」で分割したものを格納する
    ary_target_str = Split(target_str, "/")

    'ary_target_str(0)を取得
    split_str = ary_target_str(0)

    '実行結果:「2023」
    MsgBox split_str
    
End Sub

この書き方だと一旦配列に格納した後に要素番号を指定して取得する必要がある為、配列をここ以外で使わない場合は若干手間がかかってしまいます

'一旦配列を変数に格納する必要がある
ary_target_str = Split(target_str, "/")

私自身も特定の文字列を抜き出す為だけに配列を定義しないといけないことに「なんだかなぁ」と思っていました。

スポンサーリンク

同時に値を取得する方法

じゃあどうやって同じタイミングで値を取得するのか」というと、併せて要素番号を指定することで取得可能です。

例えば今回の例で「2023」を取得したい場合はSplit(target_str, "/")(0)のようにSplit()の後ろに(0)を指定してあげる感じです。

Sub test_Split()

    Dim target_str              As String
    Dim split_str               As String
    
    target_str = "2023/12/30"
    
    '変数target_strを「/」で分割&その0番目の要素を取得
    split_str = Split(target_str, "/")(0)
    
    '実行結果:「2023」
    MsgBox split_str    
    
End Sub

この方法であれば1行で分割&取得することが出来ますし、配列を格納する為の変数を用意する必要もなくなります

勿論、抜き出した後もその配列を使用するのであれば別途変数に格納するべきだと思いますが、特定の文字列を抜き出したらその配列はもう使わない、みたいな状況であればこの書き方でもいいかと思います。

'1と2の実行結果は同じ

'1
ary_target_str = Split(target_str, "/")
split_str = ary_target_str(0)

'2
split_str = Split(target_str, "/")(0)
スポンサーリンク

まとめ

今回はSplitしたと同時に値を取得する方法を備忘録も兼ねて紹介しました。

同時に値を取得する場合はSplitの後ろに欲しい要素番号を指定してあげるようにしましょう!

split_str = Split(target_str, "/")(0)

このブログではVBAに関する記事を不定期で投稿していますので、是非ご覧ください!

コメント

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