Excel FILTER関数で部分一致検索を実現するためのSEARCH関数の活用方法(~を含む)
ExcelのFILTER関数は、指定した条件に基づいてデータをフィルタリングする非常に便利な関数です。しかし、FILTER関数単体では部分一致検索を行うことはできません。そこで、この記事ではSEARCH関数とISNUMBER関数とを組み合わせて部分一致検索に近い結果を得る方法を紹介します。
サンプルテーブルの作成
以下のテーブルを例にします。
名前 | 性別 | 年齢 |
---|---|---|
山田太郎 | 男 | 34 |
佐々木花子 | 女 | 25 |
山田涼子 | 女 | 28 |
鈴木健一 | 男 | 42 |
伊藤薫 | 女 | 35 |
このテーブルから、「山田」という文字列を含む名前の行だけを抽出したいとします。
FILTER関数とSEARCH関数を組み合わせて部分一致検索を実現する(~を含む)
FILTER関数では部分一致検索が直接できないため、SEARCH関数を使って部分一致検索を実現します。以下の計算式を使用します。
=FILTER(A2:A6, ISNUMBER(SEARCH("山田", A2:A6))=TRUE)
=FILTER(A2:A6, ISNUMBER(SEARCH("山田", A2:A6)))
この計算式では、まずSEARCH関数でA2:A6の範囲内の各セルにおいて「山田」という文字列が見つかった位置を検索します。次に、ISNUMBER関数を使ってSEARCH関数の結果が数値(つまり文字列が見つかった位置)であるかどうかを判断します。SEARCH関数の結果が数値であれば「TRUE」が返りますが、「=TRUE」は省略可能です。最後に、FILTER関数がISNUMBER関数の結果に基づいてA2:A6の範囲から「山田」が含まれている行だけを抽出します。
このようにSEARCH関数の結果をISNUMBER関数で囲み「~を含む」かどうかを検査する手法はとても有効です。TRUEが返ればそのキーワードを含んでいるという意味になります。
実行結果
上記の計算式を実行すると、以下のような結果が得られます。
山田太郎 |
山田涼子 |
この結果からわかるように、「山田」という文字列を含む名前の行だけが抽出されました。
まとめ
ExcelのFILTER関数では部分一致検索を直接実行することができませんが、SEARCH関数と組み合わせることで部分一致検索に近い結果を得ることができます。この方法を利用することで、柔軟なデータ抽出が可能になります。ただし、SEARCH関数は大文字と小文字を区別しないため、大文字と小文字を区別したい場合は代わりにFIND関数を使用してください。
参考ページ:前方一致、後方一致とFILTER関数
部分一致ではなく前方一致や後方一致を希望される場合には以下のページを参考にしてください。
FILTER関数を使って「○○で始まる」または「○○で終わる」データを抽出する
参考ページ:FILTER関数で「~を含まない」検索
「~を含む」ではなく「~を含まない」ならば以下ののページを参考にしてください。
コメント