Excel VBA > tips 関数 > Split関数の「Limit」の使い方
このエントリーをはてなブックマークに追加

Split関数の「Limit」の使い方

普段使わないけど役に立つSplit関数の引数Limit

経験的には、Split関数はLimitを使わないケースのほうが多いと思いますが、使い方を覚えておくと便利です。
(ちなみにヘルプでは「limit」となっています)

普段良く使う方法のSplitおさらい

まずはLimitを使わずによくあるパターンです。

Sub Splitのテスト1()

    'よく使うSplit

    Dim varData As Variant

    'カンマ区切りを分割して配列に格納
    varData = VBA.Split(“a,b,c,d,e”, “,”)

End Sub

この場合、配列が5個(0~4)出来上がります。
Split関数の「limit」の使い方_01

いつも通りのアレですね。

Split関数のLimitを応用的に使ってみる

今度はSplitの引数Limitを使う場合(第3引数の「Limit」に要素数を入れました)です。

Sub Splitのテスト2()

    'Limit引数に配列数を指定するSplit

    Dim varData As Variant


    'Limit = 1
    varData = VBA.Split(“a,b,c,d,e”, “,”, 1)

    'Limit = 2
    varData = VBA.Split(“a,b,c,d,e”, “,”, 2)

    'Limit = 3
    varData = VBA.Split(“a,b,c,d,e”, “,”, 3)


End Sub

すると配列の数(要素数)と戻り値が変わります。
(Limit=1の時)
Split関数の「limit」の使い方_03

(Limit=2の時)
Split関数の「limit」の使い方_04

(Limit=3の時)
Split関数の「limit」の使い方_05

要は、「Limitで指定した数値分の要素数を作る」のですが、この仕様は以下の場合に役立ちそうです。

Sub Splitのテスト3()

    Dim varData As Variant

    Dim strVal  As String

    '———————————–
    'ケース1
    '———————————–
    strVal = “D:\Test\Sub\AAA.txt”

    '2階層目を取得
    varData = VBA.Split(strVal, “\”, 3)

    '———————————–
    'ケース2
    '———————————–
    strVal = “ランチメニュー,””1,000″””

    '「メニュー」と「金額」を分ける
    varData = VBA.Split(strVal, “,”, 2)

End Sub

上記2つの例を挙げてみました。
例えば、指定したパスの階層を取得するときに、「\」の数だけループ等がなくてもできます(パスの階層が可変の場合もう少し工夫が必要ですが)。
(ケース1)
Split関数の「limit」の使い方_07

もう一つはCSVファイルなどに稀に見かける、カンマが区切り文字以外の用途に使われている場合です。
(ケース2)
Split関数の「limit」の使い方_06

配列数を2個(Limit=2)にすると、、
Split関数の「limit」の使い方_08

いずれも限られたケースにのみ当てはまるということになりそうですが、覚えおいて損はないと思います。

カテゴリ:tips 関数