(Gスプレッドシート)FILTER関数でのAND検索とOR検索

GoogleスプレッドシートのFILTER関数で複数の抽出条件を設けてAND検索やOR検索をする方法についてです。

  • AND検索はそれぞれの条件をカンマで区切ることで可能です。それぞれの条件をカッコで囲み「*」で連結する方法もあります。
  • OR検索はそれぞれの条件をカッコで囲み「+」で連結することで可能です。

手順

AND検索

f:id:accs2014:20200104134817p:plain:right:w650

 画像は結果です。
 B3:D11の範囲に都道府県、市区町村、面積のデータが記録されています。
 これに対しF3セルに次のように入力しています。

=FILTER(B3:D11,B3:B11="千葉県",D3:D11<50)

 FILTER関数では第2引数だけでなく第3引数以降も抽出条件とすることができ、それらはAND条件してはたらきます。
 よってこの式は「千葉県であり、かつ、面積が50未満のもの(市区町村)」を抽出します。
 

f:id:accs2014:20200104134822p:plain:right:w650

 また、これは上記と全く同じAND検索を別の式により実行した結果です。
 F3セルには次のように入力しています。

=FILTER(B3:D11,(B3:B11="千葉県")*(D3:D11<50))

 第2引数に2つの式を詰め込んだ形になっています。
 そしてそれぞれの式をカッコで囲み「*」でつないでいます。
 これでも2つの条件のAND検索として機能します。

 なお、引数の中でも関数は使えますので、AND関数(OR検索の場合はOR関数)を使って中に2つの式を置く方法もありそうですが、残念ながらこれはエラーになります

OR検索

f:id:accs2014:20200104134826p:plain:right:w650

 画像は結果です。
 F3セルには次のように入力しています。

=FILTER(B3:D11,(B3:B11="千葉県")+(D3:D11<50))

 第2引数に2つの式を詰め込み、それぞれの式をカッコで囲み「+」でつないでいます。
 これは2つの条件のOR検索として機能します。
 つまりこの式は「千葉県であるか、または、面積が50未満であるもの(市区町村)」を抽出します。

複合的な検索

f:id:accs2014:20200104134829p:plain:right:w650

 式を組み合わせてさらに複雑な条件を置くこともできます。

 ここではF3セルに次のように入力しています。

=FILTER(B3:D11,(B3:B11="東京都")*(D3:D11<50)+(D3:D11>=100))

 この式は「『東京都であり、かつ、面積が50未満』または『面積が100以上』であるもの(市区町村)」を抽出します。
 「+」(OR)より「*」(AND)の方が優先的に解釈されますので、含まれている3つの条件式のうち最初の2つがまず結びつけられて1つの大きな条件を形成します。あとは3つ目の条件とのOR検索として機能する、というわけです。

 なお、複数の式をさらにカッコで囲むとそちらが「*」よりも優先されます。
 例は次のようになります。

=FILTER(B3:D11,(B3:B11="東京都")*((D3:D11<50)+(D3:D11>=100)))

この式は「『東京都であり』かつ『面積が50未満か、または、100以上』であるもの(市区町村)」を抽出します。よって「墨田区」の行だけを返します。