EXCELのVBAで範囲内の値と完全一致で判定する

記事内に商品プロモーションを含む場合があります。
2017.10.20 277 views

ある範囲の中から、特定の値と完全一致するかどうかを判定したいときに、少しはまったのでメモです。

Range("A:A").Find(What:="abc")

はじめ、このようなコードで一致するかどうかを判定していましたが、この方法だと部分一致でも OK になってしまうため、
x_abc_x みたいなデータもヒットしてします。

これを回避するためには、find()の第 2 引数に完全一致で比較するパラメータを渡します。

Range("A:A").Find(What:="abc", LookAt:=xlWhole)

LookAt:=xlWholeこの部分です。

このように書いておくと、完全一致で find されます。

ちなみに、この引数を省略した場合は、LookAt:= xlPartというパラメータが暗黙的に設定されているようです。

Range("A:A").Find(What:="abc", LookAt:= xlPart)

実際にはこのように動作しています。

たまたま、xxxx_abc という値と、abc という値が範囲内に存在していて少し悩みましたが、エクセル VBA では完全一致かどうかを明示的に書かないといけない関数がありますので、気を付けたいですね。