FILTER 関数では、抽出したいデータの含まれるテーブルやセル範囲と条件を指定すると、該当するデータを抽出できます。 たとえば、[Data] という名前のテーブルで [種別] 列の値が「A」のレコードを抽出したいときは下記の数式で処理できます。 この数式では、[Data] テーブルに含まれるすべての列の条件に一致する行が返ります。
=FILTER(Data , Data[種別]="A")
下図のようにテーブルの中の一部の列 ([No]、[項目]、[数量]) だけを抽出結果として返したい場合どうするか、について書きます。 
結論としては、こちら↓の数式で処理できます。これをみて「おっけー!」となる方は解説いらないですね。下のほうに CHOOSE 関数についての解説を書いておくので必要な方はどうぞ。
=CHOOSE({1,2,3},
FILTER(Data[No] , Data[種別]="A"),
FILTER(Data[項目] , Data[種別]="A"),
FILTER(Data[数量] , Data[種別]="A")) 
CHOOSE 関数について
CHOOSE 関数は、昔からあって、インデックスを使って値の引数リストから値を返したいときに使える関数です。
構文 =CHOOSE(インデックス, 値 1, [値 2], ...)
第 1 引数のインデックスに 1 から 254 までの数値 (セル参照、数式でも結果的に数値なら OK) を指定し、第 2 引数以降に第 1 引数に対応させる値を指定します。説明の中にある「値の引数リスト」というのが 第 2 引数以降ということですね。
昔からの使い方として、たとえば、セル A1 に 1 から 4 までの数値が入るとして、
セル A1 の数値が 1だったら A (1 コ目)
セル A1 の数値が 2 だったら B (2 コ目)
セル A1 の数値が 3 だったら C (3 コ目)
を表示したい (返したい) ときの数式がこちら↓

このような使い方が CHOOSE 関数での処理のメインだったのですが、スピルに対応している Excel の場合にもう 1 つの使い方があって、今回はそちらを前提に FILTER 関数を使った数式を作りました。
Microsoft 365 の Excel など、スピルに対応している Excel では、第 1 引数 (インデックス) に配列定数 ({ } でくくってまとめた複数の値の集まり) を指定して処理できます。
たとえば下記の数式では、第 2 引数以降の値を、第 1 引数 (インデックス) の配列定数で指定した順序で横に並べた結果を返します。 
第 1 引数の配列定数の順番を変えると返したい順序を指定できます。(下図では D が 最初に表示されていることがわかる)

表示したい項目の順序のみを第 1 引数の配列定数に指定することもできます。(下図では A と C だけが表示されていることがわかる)

ということで今回やりたかった FILTER 関数による指定した列のデータ抽出を CHOOSE 関数をネストして対応した、ということです。
=CHOOSE({1, 2, 3},
FILTER(Data[No] , Data[種別]="A"),
FILTER(Data[項目] , Data[種別]="A"),
FILTER(Data[数量] , Data[種別]="A"))

(ここでは) 3 つに分けて抽出した内容を CHOOSE 関数で最後にまとめている、というイメージでしょうか。 この場合、CHOOSE 関数の第 2 引数以降に指定する FILTER 関数の条件 (Data[種別]="A") について、同じ内容を何度も指定しなければならないので冗長だな、と感じるかもしれません。少しでもシンプルに条件の指定を行いたい場合は LET 関数を活用するとよいでしょう。それはまた別途書きます。
石田 かのこ













