FILTER 関数を使用すると、定義した条件に基づいてデータの範囲をフィルター処理できます。
次の例では、数式 =FILTER(A5:D20,C5:C20=H2,"") を 使用して、セル H2 で選択されている Apple のすべてのレコードを返し、Apple がない場合は空の文字列 ("") を返します。
FILTER 関数は、ブール値 (True または False) の配列に基づいて配列をフィルター処理します。
=FILTER(array,include,[if_empty])
引数 |
説明 |
array 必須 |
フィルター処理の対象となる配列または範囲 |
include 必須 |
高さまたは幅が array と同じブール値の配列 |
[if_empty] 省略可能 |
include 配列内のすべての値が空の場合 (フィルターが何も返さない場合) に返す値 |
注:
-
配列は、値の行、値の列、または値の行と列の組み合わせと考えることができます。 上記の例では、FILTER 式の対象のソース配列は範囲 A5:D20 です。
-
FILTER 関数では配列が返され、式の最終結果である場合はスピルします。 つまり、Enter キーを押すと、適切なサイズの配列範囲が動的に作成されます。 サポートしているデータが Excel テーブル内にある場合、構造化参照を使用すると、配列範囲のデータの追加または削除に応じて、配列のサイズが自動的に変更されます。 詳しくは、スピルした配列の動作に関する記事をご覧ください。
-
データセットから空の値が返る可能性がある場合は、3 番目の引数 ([if_empty]) を使用します。 そうしないと、現在 Excel では空の配列がサポートされていないため、#CALC! エラー になります。
-
include 引数の値がエラー (#N/A、#VALUE など) であるか、ブール型 (Boolean) に変換できない場合、FILTER 関数はエラーを返します。
-
Excel では、ブック間の動的配列のサポートが制限されており、このシナリオは双方のブックが開いているときにのみサポートされます。 元のブックが閉じられている場合、リンク済みの動的配列数式は更新されるとエラー値 #REF! を返します。
例
複数の条件を返すために使用されている FILTER
この例の =FILTER(A5:D20,(C5:C20=H1)*(A5:A20=H2),"") は、乗算演算子 (*) を使用して、配列範囲 (A5:D20) から、"りんご" が含まれていて、かつ、地域が "東" であるすべての値を返します。
複数の条件を返して並べ替えるために使用されている FILTER
この例の =SORT(FILTER(A5:D20,(C5:C20=H1)*(A5:A20=H2),""),4,-1) は、前の FILTER 関数と SORT 関数を使用して、配列範囲 (A5:D20) から、"りんご" が含まれていて、かつ、地域が "東" であるすべての値を、"単位" (降順) で並べ替えて返します。
この例の =SORT(FILTER(A5:D20,(C5:C20=H1)+(A5:A20=H2),""),4,-1) は、FILTER 関数と加算演算子 (+) を使用して、配列範囲 (A5:D20) から、"りんご" が含まれているか、または、"東" 地域であるすべての値を、単位 (降順) に並べ替えて返します。
関数は 1 つのセルにのみ存在し、結果は隣接したセルにスピルするので、どの関数にも絶対参照は必要ないことに注意してください。
補足説明
Excel Tech Communityで、いつでも専門家に質問できます。また、コミュニティでは、サポートを受けられます。