Excel。FILTER関数で抽出結果に0(ゼロ)が表示されてしまうので対応したい
<FILTER+IF関数>
抽出するのに便利なFILTER関数ですが、ちょっと困ることがあります。
次の表をつかって説明します。
A1:D11にデータがあります。
チームがBで、合宿参加のデータを抽出したいので、F4にFILTER関数をつかって、抽出しました。
F4につくった数式は、
=FILTER(A2:D11,C2:C11=G1,"データなし")
最初の引数は、「配列」。
範囲選択なので、A1:D11。
FILTER関数は、スピル機能対応の関数なので、絶対参照は不要です。
2つ目の引数は、「含む」。
条件なので、C2:C11=G1 と等しいデータという条件で抽出します。
G1はBなので、チームBを抽出します。
最後の引数は、「空の場合」。
該当データがない場合は、どうするかということで、「データなし」と表示する設定をしました。
抽出結果は、チームBの人が抽出できたのですが、よくみると、合宿参加の列。
I4に「0(ゼロ)」と表示されています。
抽出元のデータは、空白なのですが、0(ゼロ)と表示されてしまっています。
これでは、今回たまたま「○(まる)」ですが「0(ゼロ)」だった場合、空白で0が表示されているのか、抽出元が0なのかわかりません。
では、どのようにしたら、抽出元が空白の場合、抽出結果も空白にすることができるのでしょうか。
抽出元が空白なので、0になってしまいます。
そこで、空白を意味する「””(ダブルコーテーション×2)」に置換した状態にして抽出する必要があります。
よって、FILTER関数を次のように修正することで対応できます。
=FILTER(IF(A2:D11="","",A2:D11),C2:C11=G1,"データなし")
これで、0ではなく空白のままにすることができました。
修正したのは、「配列」のところにIF関数を追加しました。
IF(A2:D11="","",A2:D11)
A2:D11で、空白セルは、空白。
そうでなければ、A2:D11のセルに設定されているデータのままという意味です。
このように、抽出で便利な関数のFILTER関数ですが、ケースによっては、アレンジする必要があります。