ラベルラベル

動的配列・スピル入門

FILTER関数を見て理解する

指定した条件を満たす行や列だけを配列から取り出し、結果を複数セルへスピルする関数です。

3つのポイント

  1. 抽出元の表全体を指定する
  2. 残したいデータの条件を判定する
  3. TRUEの行だけを新しい一覧へスピルする
例題

部署を指定して社員一覧を絞り込む

サンプル数式

  • 配列
  • 条件範囲
  • 比較値
  • 0件時の値

いまの結果:

3行 × 3列
計算結果
結果セル:H2スピル範囲:H2:J4

先頭行:「田中」 | 「営業」 | 4

入力・条件:4項目
  • 配列A2:C6(5行 × 3列)先頭行:「田中」 | 「営業」 | 4
  • 条件範囲B2:B6(5セル)値の例:「営業」、「開発」、「人事」
  • 比較値E2:「営業」
  • 0件時の値F2:「該当なし」
この結果になる理由

抽出条件に一致した項目は3件です。

サンプルデータ

部署を変えてみよう

※ Excel と Google スプレッドシートで結果や挙動が異なる場合、Excel の仕様を基準にしています。

「部署を指定して社員一覧を絞り込む」のサンプルデータ。引数番号は正式引数と教材要素の対応、小さな角丸数字は処理順を表します。
ABCDEFGHIJ
1社員名部署在籍年数 抽出する部署0件時の値 結果  
2田中営業4  田中営業4
3佐藤開発2    鈴木営業6
4鈴木営業6    伊藤営業3
5高橋人事5       
6伊藤営業3       
配列条件範囲比較値0件時の値起点セルスピル結果
①・②a・②b・③ 正式引数 / 教材要素1–5 処理の流れ

E2、F2に値を入力すると、結果と処理順が変わります。

3つの引数

正式引数は3つです。② include を2つの教材要素に分けて表示しています。

  1. A2:C6表のセル: A2:C6

    条件に合う行を取り出す社員データです。

  2. B2:B6表のセル: B2:B6

    部署が指定した条件と一致するかを1行ずつ判定する範囲です。

  3. E2表のセル: E2

    抽出したい部署名です。値を変えると抽出結果も変わります。

  4. F2表のセル: F2

    条件に一致する社員がいないときに表示する値です。

この数式を日本語にすると

E2の部署名とB2:B6を1行ずつ比べ、同じ部署の行だけをA2:C6から取り出します。一致する社員がいなければF2の値を返します。

この説明は、最初に表示されているサンプルデータをもとにしています。入力値を変更しても説明文は変わりません。

処理の流れ

手順1〜5を順番に確認しましょう。表内の小さな角丸数字は、対応する手順を示します。

  1. 抽出する配列を確認する

    A2B2C2A3B3C3A4B4C4A5B5C5A6B6C6

    A2:C6を抽出元の配列として使います。

  2. 条件を判定する範囲を確認する

    B2B3B4B5B6

    B2:B6の各値を条件判定に使います。

  3. 比較値を確認する

    E2

    B2:B6=営業を判定し、TRUEになる行だけを残します。

  4. 0件時の値を確認する

    F2

    条件に一致するデータがあるため、0件時の値は結果に使われません。

  5. 条件に合うデータをスピルする

    H2:J4

    B2:B6=営業に一致する行を3件残し、3行×3列の結果をH2:J4へスピルします。

対応アプリ

  • Excel
  • Google スプレッドシート

関数自体が対応するアプリです。教材例の数式や再計算が、両アプリで同じように動くことを保証するものではありません。

この例の注意点

  • ExcelのFILTERはarray、include、[if_empty]の3引数です。この教材では、2番目のinclude(B2:B6=E2)を「条件範囲」と「比較値」の2つに分けて可視化しています。
  • 条件範囲が元配列と同じ高さの1列なら行を、同じ幅の1行なら列を抽出します。
  • 比較演算子は =、<>、>、>=、<、<= を扱います。Excel 2021の比較規則に合わせ、数値・文字列・論理値の型差や空白セルの特殊な比較も反映します。
  • 条件に一致するデータが0件でif_emptyを指定している場合は、その値を返します。
  • 複数条件を * や + で組み合わせるAND / OR条件は今回のFoundation対象外です。

一般構文

対応:Excel / Google スプレッドシート ・ 構文:構文差あり

  • Sheetsでは追加条件を繰り返し指定できます。
  • Excelのif_emptyに相当する引数はSheetsにはありません。
  • 一致するデータが0件の場合、Excelでif_emptyを省略すると#CALC!、Google スプレッドシートでは#N/Aになります。

Excel

=FILTER(array, include, [if_empty])

[] は省略できる引数です。

省略時

if_empty
省略して条件に合うデータが0件になると、#CALC!エラーを返します。

Google スプレッドシート

=FILTER(range, condition1, [condition2], ...)
公式資料・確認範囲

未確認

計算結果・入力の扱い・配列展開

この教材で扱わない範囲

  • 複数条件を * や + で組み合わせるAND / OR条件は、この教材では扱いません。

次に学ぶ関数

UNIQUE

条件で残した行の次は、重複を除いて一覧にします。

次に学ぶ