【エクセル時短】は「少しでも早く仕事を終わらせたい!」というビジネスパーソンのみなさんに、Excelの作業効率をアップするワザをお届けする連載です。

FILTER関数は元の表を変更しない

Excel関数の1つである「FILTER」(フィルター)は、指定した条件に一致するデータ(行)を抽出するときに使う関数です。従来からある「フィルター」機能の代わりに利用できます。

「それなら関数でなくてもいいのでは?」と思われるかもしれませんが、フィルター機能で条件を変えながら絞り込みを繰り返したいとき、元の表を残しておくためにコピーしてから作業した経験はありませんか? FILTER関数を利用すれば、元の表はそのままで、絞り込んだ結果を別の表として確認できるメリットがあります。

FILTER関数は、本記事執筆時点ではMicrosoft 365のExcel、およびExcel 2021で利用可能です。お使いのExcelで利用できるか、以下のように確認してみてください。

【エクセル時短】FILTER関数の使い方。元の表を残したまま条件に一致するデータだけ抽出!

数式バーに「=F」と入力し、一覧に「FILTER」と表示されれば利用できます。

FILTER関数は、ひとつのセルに数式を入力するだけで隣接したセルに値が入力される「スピル」機能にも対応しているため、行数の多いデータの抽出も一瞬で処理できます。構文は以下の通りで、3つ目の引数は省略可能。実務では2つの引数を指定するだけと、入力も簡単な関数となっています。

=FILTER範囲, 条件, 一致しない場合の値

  1. 範囲]......対象のデータの範囲を指定します。
  2. 条件]......[範囲]の中から抽出する条件を指定します。
  3. 一致しない場合の値]......条件に一致する行がない場合に表示する値を指定します。

単一の条件に一致するデータを抽出する

もっとも基本的な使い方として、製品の評価結果をまとめた表を例に、単一の条件を指定してデータを絞り込んでみます。

1つ目の引数[範囲]は、絞り込む対象のセル範囲を列見出しを含めずに指定します。表全体を指定するのが一般的だと思いますが、連続したセル範囲であれば表の一部を指定することも可能です。

2つ目の引数[条件]には、文字列の比較や数値の大小など、データを絞り込む条件を指定します。ここでは『総合評価が「A」』のデータとしました。3つ目の引数[一致しない場合の値]は省略しています。

1FILTER関数を入力する

【エクセル時短】FILTER関数の使い方。元の表を残したまま条件に一致するデータだけ抽出!

あらかじめ、セルG1~K1にはFILTER関数の結果として得られる表の見出しを入力しておきました。セルG2に「=FILTER(A2:E10,E2:E10="A")」と入力します。

2結果が表示された

【エクセル時短】FILTER関数の使い方。元の表を残したまま条件に一致するデータだけ抽出!

総合評価が「A」のデータを抽出できました。FILTER関数はスピルに対応しているので、ほかのセルにも自動的に結果が表示されます。

なお、引数[一致しない場合の値]を省略したときに該当するデータが存在しない場合は、[#CALC!]エラーが表示されます。例えば、「該当データなし」などの文字列を引数[一致しない場合の値]に指定しておくと、[条件]に一致していないときに表示できます。

【エクセル時短】FILTER関数の使い方。元の表を残したまま条件に一致するデータだけ抽出!

=FILTER(A2:E10,E2:E10="E","該当データなし")」と入力しました。総合評価が「E」のデータはないので「該当データなし」と表示されます。

複数の条件に一致するデータを抽出する

FILTER関数では、条件を複数指定したうえでの絞り込みも可能です。それぞれの条件を半角括弧「()」で囲み、「AかつB」のAND条件は「*」、「AまたはB」のOR条件は「+」でつなげます。

まずは『「事前評価が70以上」かつ「満足度が70以上」』のAND条件を指定してみます。入力する数式は以下の通りです。

  =FILTER(A2:E10,(C2:C10>=70)*(D2:D10>=70))
  

【エクセル時短】FILTER関数の使い方。元の表を残したまま条件に一致するデータだけ抽出!

『「事前評価が70以上」かつ「満足度が70以上」』のAND条件を指定します。セルG2に「=FILTER(A2:E10,(C2:C10>=70)*(D2:D10>=70))」と入力すると、結果が表示されました。

続いて、OR条件『「満足度が80以上」または「総合評価がB」』を指定してみます。入力する数式は以下の通りです。

  =FILTER(A2:E10,(D2:D10>=80)+(E2:E10="B"))
  

【エクセル時短】FILTER関数の使い方。元の表を残したまま条件に一致するデータだけ抽出!

『「満足度が80以上」または「総合評価がB」』のOR条件を指定します。セルG2に「=FILTER(A2:E10,(D2:D10>=80)+(E2:E10="B"))」と入力すると、結果が表示されました。

以上、FILTER関数の定番的な使い方を解説しました。引数の指定が分かりやすく、使いやすい関数だといえます。

なお、FILTER関数の条件には、ここで指定した「=」(等しい)、「>=」(以上)のほか、「<=」(以下)、「>」(より大きい)、「<」(より小さい)、「<>」(等しくない)の比較演算子も利用可能です。

関連記事