いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Excel)FILTER関数で複数条件(AND,OR)を指定する方法

 ExcelのFILTER関数で、複数の抽出条件を設けてAND検索やOR検索をする方法についてです。

  • AND検索はそれぞれの条件をカッコで囲み「*」で連結することで可能です。
  • OR検索はそれぞれの条件をカッコで囲み「+」で連結することで可能です。

AND条件(かつ)の場合

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

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

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

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

 また、先行して導入されているGooleスプレッドシートのFILTER関数では第3引数以降に条件を記すことでAND検索が可能ですが、Excelの第3引数は意味が異なるため(何も抽出されなかったときの戻り値)、抽出条件として機能しません。つまりAND検索にもOR検索にもなりません。なまじエラーになるとは限らないため注意が必要です。
 

OR条件(または)の場合

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

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

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

複合的な検索の例

 式を組み合わせて3つ以上の条件を組み合わせた複雑な条件を置くこともできます。

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

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

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

 なお、さらにカッコを使うことで優先順位を繰り上げて調整することができます。実例は省略しますが、意味合いは数値の四則演算と同様です。

AND/OR関数が使えない理由

 なぜいかにも使えそうなAND/OR関数を使うとうまくいかないのか……慣れないとExcelの謎仕様かと思ってしまいますが、これには理由があります。
 要はAND/OR関数が(参照範囲をいくら広げようとも)1つの値しか返せない関数だからですが、次の記事でAND関数と「*」演算子の比較を、FILTER関数への適用まで含めて行っていますので参考まで。

www.officeisyours.com