低所得の青色申告個人事業主のブログ

開業から経験で得た情報をお知らせしていきたいと思います。

= グローバル ナビゲーション =

Excel VBA の InStrRev 関数で2つ以上(複数)文字を探索した場合の戻り値(位置)


[ スポンサー リンク ]

InSerRev関数は、Excel関数でなく VBA の関数になります。

この関数の説明ページはいくつもあるのですが、勘違いして混乱することが多いので、その点だけを解説します。

 

 

InStrRev関数で文字列を探索した結果存在しなかった場合

InStr関数とInStrRev関数の比較で説明します。

InStr関数とInStrRev関数自体の説明は省略します。

探索する対象の文字列は

ABCDE

とします。

この文字列の中に

xyz

が存在するか探索します。

InStr ("ABCDE", "xyz")

InStrRev ("ABCDE", "xyz")

ともに戻り値は "0" です。

 

 

InStrRev関数で一箇所だけ該当文字列がある場合

探索する対象の文字列は

ABCxyzDE

とします。

この文字列の中に

xyz

が存在するか探索します。

InStr ("ABCxyzDE", "xyz")

InStrRev ("ABCxyzDE", "xyz")

ともに戻り値は "4" です。

勘違いしやすいポイントですが、InStrRev関数は探索した文字位置を返すが、前(左)からの位置を返すということです。後(右)からの位置を返すわけではありません

そのため、このケースでは戻り値は同じです。

 

InStrRev関数で複数箇所に該当文字列がある場合

言いたかったことは先のケースでいったのですが、念のためこのケースを確認します。

探索する対象の文字列は

ABxyzCDxyzE

とします。

この文字列の中に

xyz

が存在するか探索します。

InStr ("ABxyzCDxyzE", "xyz")

InStrRev ("ABxyzCDxyzE", "xyz")

InStrの戻り値は "3" です。

InStrRevの戻り値は "8" です。

ともに前(左)からの位置を表しています

 

 


ご質問は下の 「コメントを書く」 からお願いします。

ExcelVBA全般に関わる質問で、比較的簡単にお答えできるものはできる限り回答したいと思います。

回答を公開でなくメールでやり取りしたいという場合は、その旨記載していただければ非公開で回答することも可能です。

有償での作業依頼は非公開にしますので、条件等をお知らせください。