除外する列を複数指定することもできます。
- FILTER関数と他の関数を組み合わせて、左からn列目(複数指定可)以外の列だけを抽出できます。
手順
1つの列を除いて抽出する場合
次の画像で抽出の対象となっているのはC2:I5の範囲です(名前の列を含まず、日付の見出しを含んでいる点に注意)。
C7セルに関数式を入力し、この範囲のうち3列目以外を抽出しています。
C7セル
=FILTER(C2:I5,SEQUENCE(1,COLUMNS(C2:I5))<>3)
「SEQUENCE(1,COLUMNS(C2:I5))」の部分により、「1から『C2:I5の列数』までの数列」を生成しています。つまり{1,2,3,4,5,6,7}を生成しています。
そしてFILTER関数を使い、「C2:I5の7つの列のうち、配列{1,2,3,4,5,6,7}の3以外に対応する列」を抽出しています。
結果的にC,D,F,G,H,I列が抽出されます。
慣れないうちはFILTER関数のこういう働きが離れ業的に見えてしまいますが、とても便利です。
複数の列を除いて抽出する場合
対象とするデータは上記の例と同じです。
C7セルに関数式を入力し、C2:I5の範囲のうち2,5,6列目以外を抽出しています。
C7セル
=FILTER(C2:I5, COUNTIF({2,5,6},SEQUENCE(1,COLUMNS(C2:I5)))=0 )
上記の例の延長で条件を増やしていく方法もありますが、除外する列数が増えると式が長くなります。
そこで「COUNTIF({2,5,6},SEQUENCE(1,COLUMNS(C2:I5)))」の部分により、「配列{2,5,6}の中に配列{1,2,3,4,5,6,7}のそれぞれの数値がいくつあるか」をカウントしています。この部分により配列{0,1,0,0,1,1,0}が得られます。
あとはFILTER関数を使い「C2:I5の7つの列のうち、配列{0,1,0,0,1,1,0}の0に対応する列」を抽出しています。
結果的にC,E,F,I列が抽出されます。
「n行目」以外の抽出について
行/列の方向が異なるだけで、やり方としては全く同じように抽出できます。
具体的には次の記事で紹介しています。