VBA関数InStrRev関数

InStrRev関数
InStrRev

VBA関数 60回

InStrRev関数とは

特定の文字を対象となる文字列から探すときに、前からではなく後ろから探した方が都合がいいときがあります。
そのような場合に使う関数がInStrRev関数です。
戻り値として返される数値は前からの順番となります。
見つからない場合は0を返します。前から1文字目で見つかった場合は1を返します。

InStrRev関数構文

InStrRev(stringcheck,stringmatch[,start[,compare]])

四つある引数のうち、3番目の引数startと最後の4番目の引数compareは省略が可能です。
引数 stringcheckで、対象となる文字列を指定します。
引数 stringmatchで、検索する文字列を指定します。
引数startで、開始位置を表す数を指定します。
引数startは前からの文字数です。 引数compareで、大文字と小文字を区別するか指定できます。

引数compareには次の定数を指定できます。
vbTextCompare,0:テキストモードで比較します。大文字と小文字の区別をしません。
vbBinaryCompare (既定),1:バイナリモードで比較をします。


InStrRev 関数構文

InStrRev関数の使用例

InStrRev関数で後から探す

1. このサンプルではハイフン"-"が文字列の中に二つあります。
そのハイフンを後ろから探して、最初に見つけたハイフンの位置が、前から何番目にあるのかという、その番号を取得します。

Sub bfunc_60()

    Range("D2").Value = InStrRev(Range("B2").Value, "-")
    Range("D3").Value = InStrRev(Range("B3").Value, "-")
    Range("D4").Value = InStrRev(Range("B4").Value, "-")
    Range("D5").Value = InStrRev(Range("B5").Value, "-")

End Sub

InStrRev1

2. マクロを実行した結果は以下のようになりました。


InStrRev2

2番目の"-"より後の文字列を取り出す

3. では、後の文字列を取り出すコードを考えましょう。 
上記で取得した位置にプラス1した所から取り出せば良いのでMid関数をつかいます。
Mid(対象文字列, InStrRev(対象文字列, "-") + 1)

Range("E2").Value = Mid(Range("B2").Value, InStrRev(Range("B2").Value, "-") + 1)

InStrRev3

4. コードは以下のようになります。2行から5行まで繰り返すのでFor~Nextステートメントを使います。

Sub bfunc_60b()
Dim i As Long
For i = 2 To 5
    Cells(i, 5).Value = Mid(Cells(i, 2).Value, InStrRev(Cells(i, 2).Value, "-") + 1)
Next i
End Sub

こちらもおすすめ