GoogleスプレッドシートのFILTER関数では、基本的に抽出条件としてワイルドカードを使うことはできません。ワイルドカードを使う必要があればQUERY関数とLIKE句を使うのが本筋ですが、ここでは敢えてFILTER関数と他の関数と組み合わせてワイルドカードによる抽出をする方法を紹介します。
- FILTER関数とCOUNTIFS関数を組み合わせて、ワイルドカードを使った抽出ができます。
手順
画像ではB,C列に市町村名とそれぞれの面積が記録されています。
E3セルに次のような式を入力し、市町村名が「~町」であるような行だけを抽出しています。
E3セル
=FILTER(B3:C9,COUNTIFS(B3:B9,B3:B9,B3:B9,"*町"))
FILTER関数の第2引数として、ワイルドカードが使えるCOUNTIFS関数を使っているところがポイントです。
ここは「COUNTIF(B3:B9,"*町")」にした方が簡単なように見えるものの、COUNTIF関数だと数値が1個しか返ってこない(B3:B9にいくつ「~町」があるか、つまり「2」だけが返る)ため結果的にエラーになります。
そこで「COUNTIFS(B3:B9,B3:B9,B3:B9,"*町")」としています。最初の条件が一見無駄な感じもしますが、、これにより各行に「~町」がいくつあるかをそれぞれカウントした結果が得られます({0;0;1;0;0;1;0})ので、結果的に行単位の抽出が可能となっています。
なおCOUNTIFS関数の後に「>0」などと加えた方が親切ですが、結果に影響しないので省略しています。
こちらの画像では「横???」というワイルドカードを使って、「横」の字で始まる4文字の市町村を抽出しています。
E3セル
=FILTER(B3:C9,COUNTIFS(B3:B9,B3:B9,B3:B9,"横???"))