文字列関数を用いて長い文字列から特定の部分を抜き出す

スポンサーリンク

VBAの文字列関数は使いこなすとすごく便利

最近VBAだけでなく、RPAだったり他のプログラミング言語だったりをちょこちょこと使う機会があったのですが、今さらながらVBAの文字列関数の便利さに気づきました。
(他の言語でも似たような関数はあるのに、私が慣れていなくて把握していないだけかもしれませんが)

今回は文字列関数の中で私がよく使うものを紹介します。

よく使う文字列関数

①Left関数

Left関数は左から決められた文字数を抜き出す関数です。
Excelのワークシートでも同じ関数があります。
形式は下記の通りです。

Left(“全体の文字列”,抜き出したい文字数)

抜き出したい文字数が一定ではなく、特定の文字の位置までを抜き出したい場合は③Instr関数④InstrRev関数などと併せて用います。

Right関数という右から文字を抜きだす関数もありまして基本的な使い方はLeft関数と同じですが、使用頻度は明らかにLeft関数の方が高いと思います。

②Mid関数

Left関数やRight関数よりも少し複雑で、文字列の中の指定した位置から指定した文字分抜き出す関数です。
下記の形式で記入します。

Mid(“全体の文字列”,文字を抜き出す開始位置,抜き出す文字数)

抜き出す文字数は省略可能です。
Excelのワークシートでも同じ名前の関数がありますが、抜き出す文字数を省略したときの挙動が変わります。

  • ExcelワークシートのMid関数→抜き出す文字数の指定が必須(指定しないとエラーになる)
  • VBAのMid関数→文字列の最後まで抜き出す
  • ③Instr関数

    文字列の中で特定の文字(列)がどの位置にあるか調べる関数です。
    下記の形式で記入します。

    Instr(“全体の文字列”,“検索文字(列)”)

    指定した文字(列)が含まれていない場合値は0になるという特徴を利用して、文字(列)が含まれているかどうかを判定するのにも使用します。

    検索したい文字(列)が複数含まれている場合は、一番左側の位置(若い番号)を抜き出します。

    ④InstrRev関数

    Instr関数と同じく、文字列の中で特定の文字(列)がどの位置にあるか調べる関数です。
    下記の形式で記入します。

    InstrRev(“全体の文字列”,“検索文字(列)”)

    Instrとの違いは検索したい文字(列)が複数含まれている場合は、一番右側の位置(大きい番号)を抜き出すことです。

    ⑤Len関数

    Len関数は文字列の文字数を抜き出す関数です。
    上記4つの関数と比較して使う頻度は低いですが、文字列全体の文字数を把握するときに使います。
    形式は下記の通りです。

    Len(“全体の文字列”)

    単独の使用頻度は高くないのですが、他の関数組み合わせて使用するのがほとんどだと思います。

    スポンサーリンク

    文字列関数の使い方の応用例

    文字列関数は単独で使用するより、組み合わせて使用することで便利になることが多いです。
    よく使われる文字列関数の組み合わせをご紹介します。

    ①特定の文字より左側の文字列を抜き出す

    決まった文字数を抜き出すのではなく、決まった文字までの文字列を抜き出すにはLeft関数とInstr関数を使用します。
    例えば文字列の中で「_」までの部分を抜き出す場合、下記のように記入します。

    Left(”全体の文字列”,Instr(”全体の文字列”,”_”))

    Left関数で左側の文字を抜き出すのですが、その際にInstrを使用して取り出したい文字の位置を指定します。

    抜き出すときの目印になる文字(列)が複数存在する場合、最も左側の目印で切り分けたい場合はInstr関数、最も右側の目印で切り分けたい場合はInstrRev関数を用います。

    ②特定の文字より右側の文字列を抜き出す

    ①の使い方と似ていますが、Mid関数とInstr関数の組み合わせで上記の処理が可能になります。
    例えば文字列の中で「_」から後の部分を抜き出す場合、下記のように記入します。

    Mid(”全体の文字列”,Instr(”全体の文字列”,”_”)+1)

    Instr(”全体の文字列”,”_”)で目印となる「_」の位置を求めて、その次の文字位置から抜き出すために+1を行います。

    ③文字列のうち右から数文字だけ除いた分を抜き出す

    全体の文字数が色々変わる中で、右から4文字だけ除いた残りの文字列を抜き出すときなどはLeft関数と組み合わせて下記のように記載します。

    Left(“全体の文字列”,Len(“全体の文字列”)-4)

    左側を抜き出すのでLeft関数を使用しますが、Len関数を用いて抜き出す文字数を調べています。

    ④文字列の中で特定の文字(列)が複数含まれているか確認する

    少しイレギュラーな方法ですが、全体の文字列の中に特定の文字(列)が複数含まれているか確認する方法として、Instr関数の結果とInstrRev関数の結果を比較する方法があります。
    下記のように条件分岐に使用します。

    If Instr(“全体の文字列”,”_”)= InstrRev(“全体の文字列”,”_”) then
    ’1つしか含まれない、もしくは1つも含まれない場合の処理
    Else
    ’2つ以上含まれている場合の処理
    End If

    値が0になる場合の分岐を追加することで1つも含まれない場合の処理を分けることも可能です。

    コメント