FILTER関数は、以下のように指定した表のデータから指定した条件に合ったデータのみを抽出する時に活用する関数になります。
実は、必要な項目のみを抽出する際にも、FILTER関数を活用することができます。
今回は、指定した項目をFILTER関数で抽出する方法について解説していきます。
抽出する方法はいくつかあるため、順番に解説していきます。
FILTER関数の使い方は次の通りです。
=FILTER(配列, 含む, [空の場合])
// 配列:絞り込み対象の表の範囲など
// 含む:絞り込み条件
// [空の場合]:条件を満たす対象のデータが見つからない時に表示する内容(省略時はエラーが表示される)
この含むという条件ですが、通常は以下のように指定します。
=FILTER(B3:F12,E3:E12="男")
// 性別の項目が「男」の場合
ここで設定されている条件式は「E3:E12=”男”」になります。
この条件式は、「E3:E12」の1列に対しての式になります。
実は、ここで指定する式を行方向にすることで、行に対しての絞り込みができます。
行に対しての絞り込みを行うことによって、必要な項目のみを抽出することができます。
まずは簡単な方法から確認していきます。
必要な項目のみを抽出する場合、その対象の項目名の上に「・」などの任意の文字を入力します。
次に、その項目名の上の文字を条件式に加えます。
例えば、上記の画像のように「・」という文字を入力している場合は、抽出する条件式は「B1:F1=”・”」になります。
実際に、その条件式を用いて数式を作成していきます。
=FILTER(B3:F12,B1:F1="・")
このように必要な項目のみを抽出することができました。
抽出した項目に対して、更にデータの絞り込みを行いたい場合は、このFILTER関数をFILTER関数の配列の引数に設定するという方法で実現します。
=FILTER(FILTER(B3:F12,B1:F1="・"),E3:E12="男")
ただ、この方法ですと、項目名の上に「・」などといった文字を入力する必要があります。
そのため、次に「・」などといった文字を入力せずに項目を抽出する方法について解説していきます。
そのためには、「B1:F1=”・”」というような条件式が何を表しているのかを理解する必要があります。
試しに、「B1:F1=”・”」という条件式を単体で入力してみます。
= B1:F1="・"
入力すると、一行のTRUEとFALSEで構成された値が表示されるかと思います。
つまり、FILTER関数の条件式に設定する値とは、「抽出したい位置がTRUEになり、それ以外がFALSEとなるような式」であれば良いということが分かります。
直接、TRUEとFALSEで構成された数式を入力するには、カンマ区切りの値を「{」と「}」で囲みます。
={TRUE,FALSE,FALSE,TRUE,TRUE}
このように直接入力することができます。
また、TRUEは0以外の数値、FALSEは0としても表現することができます。
実際に、1と0に置き換えてみると以下のようになります。
={1,0,0,1,1}
この式をFILTER関数に設定することで、項目名の上に「・」などといった文字を入力しなくても、好みの項目のみを抽出することができます。
=FILTER(B3:F12,{1,0,0,1,1})
このように好みの項目のみを抽出することができました。
ただ、「{1,0,0,1,1}」などといった値を入力するのは、若干の手間になります。
1と0を入力している時に、誤って1つずつずれてしまう可能性もあります。
そのため、以下のようにIF関数やSWITCH関数などを用いて表現するのも良いかと思います。
IF関数の場合は、以下のようになります。
=IF((B2:F2=B2)+(B2:F2=E2)+(B2:F2=F2),1,0)
// 抽出したい項目を「(B2:F2=B2)」のように「+」で並べる
// 「+」はORという意味なる
=FILTER(B3:F12,IF((B2:F2=B2)+(B2:F2=E2)+(B2:F2=F2),1,0))
ちなみに、以下のようにIF関数を使わなくても表現することができます。
=FILTER(B3:F12,(B2:F2=B2)+(B2:F2=E2)+(B2:F2=F2))
SWITCH関数の場合は、以下のようになります。
=SWITCH(B2:F2,B2,1,E2,1,F2,1,0)
// 抽出したい項目を「B2,1」のように必要な分を並べる
// 「B2」などと指定された項目名の場合は1、それ以外は0が返される
=FILTER(B3:F12,SWITCH(B2:F2,B2,1,E2,1,F2,1,0))
これらは例になるため、他の方法を考えてみるのもよいかと思います。