FILTER関数では、指定した表から指定した条件を満たしたデータのみを抽出することができます。
FILTER関数の使い方は以下の通りです。
=FILTER(配列, 含む, [空の場合])
// 指定した配列から指定の条件を満たすデータのみを抽出する
// [空の場合]は条件を満たすデータが見つからない場合に表示する内容
ただ、表の指定は通常であれば「開始セル:終了セル」というような指定になり、離れている項目のみを指定することができません。
例えば、以下の表から性別が”女”のデータのみを抽出する場合、以下の数式で実現ができます。
=FILTER(B3:E12,D3:D12="女","")

こちらの場合は、すべての項目を抽出しています。
表の範囲の指定は、「B3:E12」の部分になります。
このように「開始セル:終了セル」と指定しているため、特定の項目(例えば、”氏名”と”生年月日”)のみを抽出ということが難しいです。
“氏名”と”生年月日”のみを抽出する際に、考えられる方法の1つとして、複数の数式を扱うという方法があります。
以下のイメージになります。
=FILTER(C3:C12,D3:D12="女","")
=FILTER(E3:E12,D3:D12="女","")

ただ、この方法の場合、複数の項目になると同時に、数式が増えてメンテナンスが大変になります。
そこで、上記のような離れている項目を抽出するには、次の方法がオススメです。
それは、FILTER関数を用いて必要な項目を抽出した上で、FILTER関数で絞り込むという方法です。
FILTER関数は横向きの表にも活用することができます。
また、条件式は「要素の数分のTRUEもしくはFALSE」である必要があります。
例えば、「D3:D12=”女”」という式を使わずに直接指定する場合は以下のようになります。
=FILTER(C3:C12,{TRUE;FALSE;TRUE;TRUE;FALSE;TRUE;FALSE;TRUE;FALSE;FALSE},"")
// 要素を直接指定する場合は、"{"と"}"で囲み、行を表す場合は「;」、列を表す場合は「,」を用いる

また、TRUEとFALSEは「0」や「1」などの数値でも表現することができます。
詳しくはこちら(FILTER関数で複数条件指定)をご確認ください。
先ほどの数式を数値で表現すると以下のようになります。
=FILTER(C3:C12,{1;0;1;1;0;1;0;1;0;0},"")

この数式と同じように、特定の項目(例えば、”氏名”と”生年月日”)のみを抽出したい場合は以下のように表現できます。
=FILTER(B3:E12,{0,1,0,1},"")
// 列に対しての抽出条件を指定する必要があるため、「{0,1,0,1}」と「,」区切りで表現
// 「{0,1,0,1}」は、先頭から抽出したい項目の位置を「1」としている

この数式をFILTER関数の引数「配列」に代入して、抽出条件を外側のFILTER関数の引数に指定することで、1箇所のセルのみの数式で表現することができます。
=FILTER(FILTER(B3:E12,{0,1,0,1}),D3:D12="女","")
// 列の抽出では対象が必ず存在するため、引数の[空の場合]を省略している

また、FILTER関数の順番を逆にしても実現することができます。
=FILTER(FILTER(B3:E12,D3:D12="女",""),{0,1,0,1},"")

ただ、後者の方法の場合、内側のFILTER関数で対象が見つからない場合、外側のFILTER関数では、必ずエラーになってしまいます。

このことを考慮すると、以下の前者の方法で実現するのが良いです。
=FILTER(FILTER(B3:E12,{0,1,0,1}),D3:D12="女","")
メンテナンスのことを考慮すると、数式が増えすぎるのは良くないです。
そのため、今回の方法のように簡単にまとめられる場合は、まとめた方が良いです。


































































































