皆さん、Excelでデータを扱う際に、「特定の文字を含むデータだけを抽出したい」と思ったことはありませんか?例えば、「商品名に『プレミアム』と入っている商品だけを一覧にしたい」といったケースです。今回は、そんな「あいまい検索」をExcelのFILTER関数で実現する方法をご紹介します。
FILTER関数とは?
まず、FILTER関数について簡単におさらいしましょう。FILTER関数は、指定した条件に合致するデータを抽出するための関数です。基本的な使い方は以下の通りです。
=FILTER(配列, 条件, [空の場合])
– 配列フィルタリングしたいデータ範囲
– 条件抽出したい条件
– 空の場合条件に合致するデータがない場合に表示する値(省略可能)
例えば、商品リストから在庫が50個以上の商品を抽出したい場合、以下のように使用します。
=FILTER(A2:C100, B2:B100 >= 50, "該当なし")
FILTER関数でのあいまい検索の課題
しかし、FILTER関数には一つの制約があります。それは、ワイルドカード(*や?)が使用できないという点です。つまり、「商品名に『プレミアム』を含む商品を抽出したい」と思っても、直接的には実現できません。
FIND関数と組み合わせてあいまい検索を実現する
そこで、FIND関数を組み合わせることで、この課題を解決します。FIND関数は、指定した文字列がセル内のどの位置にあるかを返す関数です。具体的な使い方は以下の通りです。
=FIND(検索文字列, 対象文字列)
例えば、セルA1に「プレミアム商品」と入力されている場合、
=FIND("プレミアム", A1)
とすると、結果は1(「プレミアム」が1文字目にある)となります。一方、「プレミアム」が含まれていない場合はエラーを返します。
この特性を利用して、FILTER関数と組み合わせることで、あいまい検索を実現します。
具体的な手順
1. データ範囲を選択するまず、フィルタリングしたいデータ範囲を指定します。例えば、商品リスト全体がC100にあるとします。
2. FIND関数で条件を設定する次に、FIND関数を使って、特定の文字列が含まれているかを判定します。例えば、「プレミアム」を含む商品名を抽出したい場合、以下のように設定します。
FIND("プレミアム", A100)
3. IFERROR関数でエラー処理を行うFIND関数は、検索文字列が見つからない場合にエラーを返すため、IFERROR関数を使ってエラーを0に置き換えます。
IFERROR(FIND("プレミアム", A100), 0)
4. FILTER関数でデータを抽出する最後に、上記の条件を使ってFILTER関数でデータを抽出します。
=FILTER(C100, IFERROR(FIND("プレミアム", A100), 0) > 0, "該当なし")
このようにすることで、「プレミアム」を含む商品だけを抽出することができます。
COUNTIFS関数を利用した別の方法
もう一つの方法として、COUNTIFS関数を利用する方法があります。COUNTIFS関数は、複数の条件に合致するセルの数を数える関数ですが、これを応用してあいまい検索を実現します。
具体的な手順
1. データ範囲を選択するフィルタリングしたいデータ範囲を指定します。
2. COUNTIFS関数で条件を設定するCOUNTIFS関数を使って、特定の文字列を含むかどうかを判定します。例えば、「プレミアム」を含む商品名を抽出したい場合、以下のように設定します。
COUNTIFS(A100, "*プレミアム*")
3. FILTER関数でデータを抽出する最後に、上記の条件を使ってFILTER関数でデータを抽出します。
=FILTER(C100, COUNTIFS(A100, "*プレミアム*"), "該当なし")
この方法でも、特定の文字列を含むデータを抽出することが可能です。
まとめ
今回は、ExcelのFILTER関数であいまい検索を実現する方法をご紹介しました。直接的にはワイルドカードが使用できないFILTER関数ですが、FIND関数やCOUNTIFS関数を組み合わせることで、柔軟なデータ抽出が可能となります。ぜひ、日々の業務で活用してみてください。



コメント