説明
この関数を使用して、範囲あるいは配列から指定した条件を満たす行を抽出します。
構文
FILTER(配列, 含む, [if_empty])
入力
この関数は以下の引数を承認します:
| 名称 | 必須 | 説明 | 有効な入力 |
|---|---|---|---|
配列 |
はい | フィルターする範囲または配列。 | セル、セル範囲、動的配列、またはこれらのいずれかになる数式。 |
含む |
はい | 返却する行を決定するブーリアン型配列あるいは論理式。 | 論理値 (TRUE または FALSE)、数値 (0 は FALSE、その他の数値は TRUE)、これらの値のいずれかを含むセルへの参照、またはこれらのいずれかを返す数式。 |
if_empty |
いいえ | フィルター条件に一致する行がない場合に返却する値。 | 一致する行が検索されなかった場合に表示されるテキスト文字列。 |
例
サンプルデータ
| A | B | C | 17 才以上対象 | |
|---|---|---|---|---|
| 1 | 名称 | 年齢 | 都市 | 給与 |
| 2 | ジョン | 35 | ニューヨーク | 75000 |
| 3 | アリス | 28 | シカゴ | 65000 |
| 4 | ボブ | 42 | ロサンゼルス | 85000 |
| 5 | ジョージ | 22 | デンバー | 55000 |
| 6 | ヘレン | 30 | スコッツデール | 71000 |
数式のサンプル
範囲は一致しなければなりません!FILTER で複数の範囲を使用する場合は、フィルター式の一部として指定されたすべての範囲で行値が同じでなければなりません。
| 使用例 | 数式 | 結果 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 30歳以上の全従業員のデータセットを作成します。 | =filter(a1:d6, b1:b6>30) |
この数式は、データセット (A1:D6) を調べて、Age が 30 より大きい行を抽出します。
|
||||||||||||||||
| 50歳以上の全従業員のデータセットを作成し、該当者がいない場合にカスタマイズしたメッセージを表示します。 | =IFERROR(FILTER(A2:D6, B2:B6>50), "None") |
この数式では、フィルターを使ってデータセット (A2:D6) を調べ、Age が 50 より大きい行を抽出しています。None" という文字列を表示するためにIFERROR で処理されます。上記のデータ設定を使用すると、以下のようになります:
|
||||||||||||||||
| 25歳以上の全従業員を給与の降順で並べ替えたデータセットを作成します。 | =sort(filter(a2:d6, b2:b6>25), 4, -1) |
この数式は、FILTER を使用してデータセット (A1:D6) を調べ、Age が 25 より大きい行を抽出します。SORT (..., 4, -1) を実行すると、絞り込まれたリストが給与 (列 4) の降順で並べ替えられます。 上記のデータ設定を使用すると、以下のようになります:
|
||||||||||||||||
| 平均給与以上の従業員を検索します。 | =filter(a2:d6, d2:d6> average(d2:d6)) |
この数式は、給与 (D2:D6) のAVERAGE を決定し、FILTER を使用してデータセット (A2:D6) を調べ、給与が平均より大きい行を抽出します。上記のデータテーブルを使用すると、以下のようになります:
|
||||||||||||||||
| 30歳未満で60,000ドル以上稼ぐ従業員を識別子化。 | =FILTER(A1:D6,(B1:B6<30)*(D1:D6>60000)) |
この数式は、給与 (D2:D6) のAVERAGE を決定し、FILTER を使用してデータセット (A2:D6) を調べ、給与が平均より大きい行を抽出します。
|
メモ
- すべての配列関数と同様に、FILTERはFILTER関数を含むセルを起点として、隣接するセルに結果を動的に入力します。
- フィルター:
- 複雑な複数条件のフィルターをサポートします。
- 指定した論理条件に一致する行を返却します。
- 複数の論理テストを* ("AND") または + ("OR") でサポートします。
たとえば、B 列の値が "Chocolate"または "Coffee" であるレコードを表示するように範囲をフィルターする数式は次のようになります:=FILTER(A2:C100, (B2:B100="Chocolate") + (B2:B100="Coffee")).
ヒント
- ヘッダー行があり、ヘッダーを含めたくない場合は、配列の値を1行下げて開始します(例えば、上記のデータセットでは、A1ではなくA2から開始します)。
- FILTERは、以下を含む他の関数と結合することができます:
- CHOOSEROWS :フィルターにかけた結果をさらに絞り込みます。
- CHOOSECOLS :フィルターにかけたデータから特定の列を選択。
- SORT :フィルターされた結果を並べ替えます。
関連関数
Workiva スプレッドシートで対応可能なその他の配列数式関数を示します。