文字列を曖昧検索したい(例えば「り」で始まり「ご」で終わる語句を検索する等)-Excel VBA Tips

Excel VBA Tips集-4

文字列を曖昧検索するには?

例えば「り*ご」で検索をかけると、「り」で始まり「ご」で終わる全てのワードを曖昧検索することができます(例:りんご)。

また例えば「*区」とすると、「区」で終わる全ての語句を曖昧検索することができます(例:港区、鶴見区)。

あるいは、「株*」を検索語句にすると「株」で始まる全ての語句を検索できます(例:株式会社ABC企画、株式ニュース)。

尚、シート内の検索ワードに該当する全てのセルを抽出するには、Findメソッドだけではなく、FindNextメソッドも用います。

下記のに曖昧検索のサンプルプログラムを掲載します。

[スポンサードリンク]

曖昧検索のサンプルプログラム

【サンプルプログラム実行前のExcel画面】

曖昧検索実行前のExcel画面

上記のExcel画面内の全てのセルを参照し、「部」で終わるワードの背景色を黄色にするサンプルプログラムです。

【実行結果】

曖昧検索実行後のExcel画面

確かに、「営業部」、「新規事業開発部」、「創薬研究部」等、「部」で終わる語句の背景色が黄色になっていますね。

この行がポイントです。検索語句を「*部」とすることで、「部」で終わる全ての文字列を検索できます。

また例えば「keyword = “??????部”」を検索キーワードに指定すると、「部」で終わる、7文字以上の語句にマッチします。例えば、「新規事業開発部(7文字)」・「コンプライアンス推進部(11文字)」にマッチします。逆に「営業部」や「企画開発部」は7文字未満なのでマッチしません。

[スポンサードリンク]

曖昧検索でよく使う記号

記号 意味
* 任意の文字列(文字数は問わない)
【例】「V*A」は「VBA」、「VBBBA」にマッチする。
? 任意の1文字
【例】「???」⇒3文字以上の全ての文字列

さらにExcel VBAではLike演算子を用いることで、下記のような曖昧検索ができます。

Like演算子を使った検索

文字列A Like 文字列B

上記のように書くことで、文字列Aと文字列Bを「曖昧に」比較することができます。例えば、「営業部” Like “*部」は左辺と右辺が一致するので、Trueになります。

Like演算子を利用したパターンマッチングには下記のような特殊な記法を用います。

記法 意味 使用例
? 任意の1文字 「???」⇒任意の3文字の語句または数値
【例】「営業部」「100」
* 任意の文字(文字数は問わない) 「*部*課」⇒ 任意の文字 + 部 + 任意の文字+ 課
【例】人事部採用課、企画部企画2課
 []  []内のどれか1文字  *[所,室,部] ⇒ 任意の文字 + 所 or 室 or 部
【例】研究所、企画室、経理部
 [!]  [!]内のどれか一文字以外  *[!部] ⇒ 任意の文字 + 「部」以外のなんらかの文字
【例】りんご、ごりら、VBA、1500
 #  任意の1文字の数値  ### ⇒ 任意の3文字の数値
【例】001、100、999

Like演算子を用いたセルの検索のサンプルプログラム

下記のサンプルプログラムは「部」または「所」で終わるセルの背景色を青色にします。

【サンプルプログラム実行前のExcel画面】

like演算子による検索の実行前のExcel画面

【実行結果】

Like演算子のサンプルプログラム実行結果

確かに、基礎研究所、総務部など、「任意の文字列 + 部 or 所」の文字列にマッチしているセルだけ背景色が青くなっているのが分かりますね。

尚、[0-9]と書くと「0~9のどれか1文字」を意味します。また、[a-z]と書くと「a~z」のどれか1文字を表します。

関連項目

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA