EXCEL VBA あいまいな条件検索・複数条件を検索・該当する文字のみ検索・配列を利用(テクニック)

 

 

EXCEL VBA あいまいな条件検索・複数条件を検索・該当する文字のみ検索・配列を利用(テクニック)

 

 

 ●はじめに

 今回説明するのは、あいまい検索・部分一致検索をする方法を説明いたします。入力されたキーワードに対して、そのキーワードが含まれるすべての項目を検索します。Excel VBAではVBA関数を組み合わせてあいまい検索を実装することができます。本記事では、Excel VBAでのあいまい検索の実装方法を詳しくサンプルプログラムを交えて順番に説明いたします。

●【EXCEL VBA セルの値を連続的に検索・複数セルを抽出・全ての検索・次の検索・同じ検索条件で検索(FindNextメゾット)については、下記を参照して下さい】

EXCEL VBA セルの値を連続的に検索・複数セルを抽出・全ての検索・次の検索・同じ検索条件で検索(FindNextメゾット)

●【EXCEL VBA セルの検索(完全一致・部分一致・複数一致)「Find・FindNextメゾット」の使い方、下記を参照して下さい】

EXCEL VBA セルの検索(完全一致・部分一致・複数一致)「Find・FindNextメゾット」の使い方

 

 

EXCEL VBA あいまい検索 複数のキーワードに対しての検索・行番号と件数取得 (テクニック)

 

 

 ●プログラム説明 (サンプル①)

下記のサンプルプログラムは、複数のキーワードとして設定された文字列に対してあいまい検索を行うサンプルプログラムです。今回のサンプルプログラムでは、住所データの中に指定した複数のキーワードが該当した場合に、結果として行番号と該当した件数をカウントするサンプルプログラムです。文字列内に探し出したいキーワード(文字列)が複数あるときには、とても便利だと思います。


【プログラムの流れ】
下記のVBAプログラムでは、指定した範囲内で、セル D2 ~ D4 に記載された複数のキーワードをもとに、あいまいな検索を実行して該当する行番号を抽出し、セルに表示するサンプルプログラムです。

① キーワードを文字列の配列として取得する。
② キーワードの配列の各要素について、指定した範囲内であいまい検索を実行する。
③ 該当する行番号を文字列に結合する。
④ 該当件数をカウントする。
⑤ 結果をセルに表示する。(該当する行番号全てと件数の合計)

【プログラム実行条件・注意事項】
① セル D2 ~ D4 に複数のキーワードを入力する必要がある。
② セル範囲は A2 ~ A20 であることが前提となっているため、必要に応じて修正する必要がある。

★【サンプルプログラム】
下記のリンク先よりサンプルプログラムをダウンロードする事ができます。
● fuzzySearchMultipl01(サンプルプログラム)

 

 

 

 

●実行前~実行後 ※プログラム実行後、キーワードを設定した内容に応じて該当した行番号と、その該当件数がE列に表示されました。
(画面クリックして拡大)

 

 

 

 

EXCEL VBA あいまい検索・正規表現オブジェクトを利用した検索・該当文字を赤字にする(テクニック)

 

 

 ●プログラム説明 (サンプル②)

下記のサンプルプログラムは、複数のキーワードとして設定された文字列に対してあいまい検索を行うサンプルプログラムです。今回のサンプルプログラムでは、正規表現オブジェクトを利用して指定範囲内(データ)の中から指定されたキーワードに基づいて、指定範囲内の一致する文字列を検索し、該当文字のみを赤くする処理を行います。

【正規表現オブジェクトについて】
正規表現オブジェクトは、文字列のパターンマッチングを行うためのオブジェクトです。VBAでは、「VBScript.RegExp」オブジェクトを使用して正規表現を扱うことができます。正規表現を利用することで、特定のパターンに一致する文字列を簡単に検索、置換、抽出することができます。

【プログラムの流れ】
① 検索範囲を設定(セルF2~F4を除く)
② キーワードを取得
③ 正規表現オブジェクトを初期化
④ キーワードをループし、正規表現パターンに設定
⑤ 検索範囲の各セルをループ
⑥ セルの値が正規表現のパターンに一致するかテスト
⑦ 一致するセルを結果範囲に追加
⑧ セル内の該当文字のみを赤にする

【プログラム実行条件・注意事項】
① スクリーン更新をオフにして処理速度を向上させていますが、処理が終わった後はスクリーン更新をオンに戻すことが重要です。
② 正規表現はパターンマッチングに非常に便利ですが、複雑なパターンになると理解が難しくなることがあります。適切なパターンを設定することが重要です。

★【サンプルプログラム】
下記のリンク先よりサンプルプログラムをダウンロードする事ができます。
● fuzzySearchMultipl02(サンプルプログラム)

 

 

 

 

 ●実行前~実行後 ※プログラム実行後、検索範囲内(データ)のセルで該当する複数のキーワードの中から一致する文字列があった場合に、その文字だけを赤色に変更する処理を行います。大量のデータから複数のキーワードを検索するときに便利だと思います。
(画面クリックして拡大)

 

 

EXCEL VBA あいまい検索・配列を利用した検索(テクニック)

 

 

 ●プログラム説明 (サンプル③)

今回のプログラムはサンプルプログラム②の一部応用と配列を利用した方法で、Excelワークシート内の指定範囲(A2から始まる5列分の範囲)で、F2~F4セル内にあるキーワードを検索し、キーワードが含まれるセル内の該当文字を赤字にし、同じ行のD列に※印を付ける処理を行います。このコードは、正規表現を使わず、配列を使用して処理速度を高速化しています。

 

【プログラムの流れ】
① スクリーン更新をオフにし、処理速度を向上させる
② 検索範囲の設定
③ キーワードの取得
④ 配列に検索範囲のデータを格納
⑤ 各キーワードをループし、配列内で処理を行う
⑥ 該当する文字列と同じ行のD列に※印を付ける
⑦ 配列内のデータをワークシートに書き戻す
⑧ 該当する文字を赤字に変更
⑨ スクリーン更新をオンに戻す

【プログラム実行条件・注意事項】
・配列を使用しているため、文字色の変更は配列に対して行えません。そのため、ワークシートにデータを書き戻した後に、該当する文字を赤字に変更する処理を追加しています。

★【サンプルプログラム】
下記のリンク先よりサンプルプログラムをダウンロードする事ができます。
● fuzzySearchMultipl03(サンプルプログラム)


 

 

 

 ●実行前~実行後 ※プログラム実行後、指定された検索範囲内で、F2~F4セル内にあるキーワードが含まれるセルが見つかります。該当するセル内のキーワードが赤字になり、同じ行のD列に※印が付けられます。
(画面クリックして拡大)

 

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。