更新日:、 作成日:
エクセル FILTER 関数:セルの範囲を条件に一致する値に絞り込む
はじめに
エクセルの FILTER 関数の使い方を紹介します。
FILTER 関数はセルの範囲から条件を満たす行や列を抽出します。
=FILTER(A1:C3,C1:C3>=100) のようにして、列「C」の値が 100 以上の行を抽出できます。
=FILTER(A1:C3,A1:C1="エクセル") のようにして、行「1」の値が エクセル の列を抽出できます。
=FILTER(A1:C3,{TRUE,FALSE,TRUE}) のようにして、1 列目と 3 列目を抽出できます。
複数条件にして抽出したり、行を抽出してから列を抽出できます。
FILTER 関数の引数
FILTER(範囲, 含める)
範囲の中から含める行に対応した範囲を行単位で抽出します。
範囲の中から含める列に対応した範囲を列単位で抽出します。
FILTER(範囲, 含める, 空の場合)
結果が空の場合に返す値を指定できます。
引数「範囲」 | セルの範囲や配列を指定します。 | |
引数「含める」 | 条件を比較演算子を使って指定します。 行を抽出するには、引数「範囲」と同じ行数の範囲に対して条件を指定します。 列を抽出するには、引数「範囲」と同じ列数の範囲に対して条件を指定します。 | |
引数「空の場合」 | 省略できます。 結果が空のときに返す値を指定します。数値、文字列、セル参照、関数などを指定できます。 | スピル化 |
スピル化:セルの範囲や配列を指定すると結果が「スピル」します。
引数「含める」
使用できる比較演算子には次のものがあります。
演算子 | 演算名 | 使用例 | 結果 |
= | 等しい | 1=2 | FALSE |
<> | 等しくない | 1<>2 | TRUE |
> | 大きい | 1>2 | FALSE |
< | 小さい | 1<2 | TRUE |
>= | 以上 | 1>=2 | FALSE |
<= | 以下 | 1<=2 | TRUE |
スポンサーリンク
使い方、条件が一つ
FILTER 関数の条件が一つの使い方を紹介します。
行を抽出する
セルの範囲から含めるが TRUE の行を抽出します。通常は引数「含める」に条件を入力します。; で区切った配列で、直接抽出したい行を指定できます。
=FILTER(B3:D7,{TRUE;FALSE;TRUE;FALSE;TRUE})
引数「含める」が 1 列のときに行を抽出できます。
列を抽出する
セルの範囲から名前と値の列を抽出します。, で区切った配列で、直接抽出したい列を指定できます。
=FILTER(B3:D7,{TRUE,FALSE,TRUE}))
引数「含める」が 1 行のときに列を抽出できます。
何も抽出されないときの値を表示する
何も抽出されないときに なし を表示します。何も表示しないなら空文字 "" を入力します。
=FILTER(B3:D7,E3:E7,"")
値が 30 以上の行を抽出する
値が 30 以上の行を抽出します。
行単位に抽出するには、1 列に対して D3:D7>=30 のように条件を入力します。
名前がエクセルの行を抽出する
名前が エクセル の行を抽出します。
特定の文字が入っている行を抽出する
名前に E の文字が入っている行を抽出します。「FIND 関数」または「SEARCH 関数」を使用して特定の文字が入っているか部分一致で検索できます。
- FIND 関数:大文字小文字を区別します。
- SEARCH 関数:大文字小文字を区別しません。
=FILTER(B3:D7,IFERROR(SEARCH("E",B3:B7),FALSE))
検索値が見つからないときはエラーになるので「IFERROR 関数」から FALSE にして、含めないようにできます。
使い方、複数条件
FILTER 関数の複数条件の使い方を紹介します。
スピルで AND 条件
複数条件にするには「AND 関数」を使用しますが「スピル」されないので、引数「含める」には入力できません。
スピルで AND 条件を入力するには条件を掛け算します。条件を () で囲む必要があります。
名前が エクセル でバージョンが 365 かスピルで判定します。
結果が TRUE のときは 1、FALSE のときは 0 になります。
これを引数「含める」に入力して、複数条件を満たす行や列を抽出できます。
スピルで OR 条件
複数条件にするには「OR 関数」を使用しますが「スピル」されないので、引数「含める」には入力できません。
スピルで OR 条件を入力するには条件を足し算します。条件を () で囲む必要があります。
名前が エクセル またはバージョンが 365 かスピルで判定します。
結果が TRUE のときは 1 以上、FALSE のときは 0 になります。
これを引数「含める」に入力して、複数条件を満たす行や列を抽出できます。
数値が指定の範囲内
値が 20 以上でセル「E3」以下の行を抽出します。
日付が指定の範囲内
日付が開始日から 2000/12/31 の範囲の行を抽出します。「DATE 関数」を使用して日付を入力できます。
終了日を (C3:C7<=DATE(2000,12,31)) にすると、時刻が含まれるときに終了日が条件に一致しなくなるので、次の日より小さい判定にしています。
名前がエクセルかつ値が 30 以上
名前が エクセル で値が 30 以上の行を抽出します。
高度な使い方
FILTER 関数と他の関数を組み合わせた使い方などを紹介します。
行を抽出してから列を抽出する
値が 30 以上の行を抽出して、名前と値の列を抽出します。行と列を抽出するには FILTER 関数を入れ子にします。
引数「含める」に配列を入力して、抽出する列を指定できます。
抽出した結果を並び替えする
値が 30 以上の行を抽出して、値の降順で並び替えをします。「SORT 関数」を使用して並び替えができます。
最初の行だけ抽出する
値が 30 以上の最初の行を抽出します。「INDEX 関数」を使用して何番目の行か指定できます。
=INDEX(FILTER(B3:D7,D3:D7>=30),2,0)
=FILTER(B3:D7,D3:D7>=30)
解説
行を抽出するには、引数「含める」を 1 列にします。その値が TRUE の行を引数「範囲」から抽出します。{TRUE;FALSE;TRUE} のように ; で区切った配列で、直接抽出したい行を指定できます。
列を抽出するには、引数「含める」を 1 行にします。その値が TRUE の列を引数「範囲」から抽出します。{TRUE,FALSE,TRUE} のように , で区切った配列で、直接抽出したい列を指定できます。
引数「範囲」と引数「含める」の行数または列数が一致していないときはエラー #VALUE! になります。
引数「含める」が数値のときは 0 なら FALSE、それ以外なら TRUE として扱います。
文字列を = や <> から比較するとき、大文字と小文字を区別しません。"ABC"="abc" は TRUE になります。「EXACT 関数」を使用して大文字小文字を区別できます。
引数「含める」が TRUE や FLASE 以外の文字列のときはエラー #VALUE! になります。
引数「含める」が複数の行列のときはエラー #VALUE! になります。
引数「含める」の中にエラーが含まれているときは、結果もそのエラーになります。
引数「含める」がすべて FALSE なら、引数「空の場合」を返します。
引数「含める」がすべて FALSE のときに引数「空の場合」を省略しているときは、エラー #CALC! になります。
スポンサーリンク