K-fix Learning & Playing

25 FILTER関数


FILTER関数は、指定した条件に基づいてデータの範囲をフィルター処理し、条件に一致するデータだけを抽出する関数です。書式は以下の通りです。

「配列」: フィルター処理する元データを指定します。必須です。
「含む」: フィルター条件を指定します。必須です。
「空の場合」:フィルターが何も返さない場合に返す値を指定します。省略できます。

FILTER関数は1つのセルにのみ存在し、結果は隣接したセルにスピルするため、絶対参照は必要ありません。また、引数「空の場合」を省略して、フィルタの結果が存在しない場合は、「#CALC!」というエラーが表示されます。

FILTER関数の第2引数「含む」には条件を指定しますが、条件を2つ指定したい場合にAND条件(AかつB)、OR条件(AまたはB)の記述方法があります。
例えば、A列に果物名、C列に地域名が入力されているとします。抽出として「りんご」が含まれていて、かつ地域が「東」であるすべての値を返す場合には、「=FILTER(A5:D20, (A5:A20="りんご") * (C5:C20="東"), "")」と記述します。
また、「りんご」が含まれているか、または地域が「東」であるすべての値を返す場合は、「=FILTER(A5:D20, (A5:A20="りんご") + (C5:C20="東"), "")」と記述します。 条件を複数指定する時、それぞれの条件を括弧で囲み、AND条件では「*」、OR条件では「+」で条件を連結します。

配列に指定したすべての項目を条件に従って抽出するFILTER関数で、抽出したい項目を限定したい場合があります。下の図で説明しましょう。

FILTER関数

セルH3には、「=FILTER(FILTER(A3:F5,F3:F5="A",""),COUNTIF(H2:J2,A2:F2))」と入力しています。
項目を絞り込んで抽出する時は、FILTER関数を入れ子にします。引数「配列」はすべての項目を条件に従って抽出するFILTER関数を指定します。引数「含む」には、COUNTIF関数を使い、第1引数「範囲」には抽出したい見出し行を指定し、第2引数「検索条件」には元データの見出しを指定します。この時、COUNTIF関数の結果は「{1,1,0,0,0,1}」となり、1の列がTRUE、0の列 がFALSEになります。結果としては1の列だけが抽出結果として表示されます。
※{1,1,0,0,0,1}は{NO,氏名,国語,英語,合計,評価}を表しています。

FILTER関数

作成した数式の部分的な結果を知りたい場合は、数式バーでその部分を選択してF9キーを押せば表示されます。元に戻すときはESCキーを押します。