なんでもエクセル(Nandemo Excel)

何でもエクセルでやってしまう そこのあなた。ようこそ

数式/関数:B列と比較してA列にしかない値を抽出する

2列の比較ってよくある話なんだけど、COUNTIF関数を入れた作業セルをずらっと並べる方法はさすがにもうやめたほうがいい。

添付のように、A・B列を比較して、A列にしかない「10」と「14」を抜き出す場合。絶対にやってはいけないのが、FILTER関数で条件指定に列参照の配列数式を入れる方法だ。

重い・ダメ・絶対
=FILTER(A:A,(COUNTIF(B:B,A:A)=0)*(A:A<>""))

さすがにこんなことをするくらいなら、作業列ダラダラのほうがまだましである。この手の計算をするなら、必ずいらないデータを除外してからやること。

範囲を絞ってから抽出
=LET(     _rngA,TAKE(A:A,COUNTA(A:A)),     _rngB,TAKE(B:B,COUNTA(B:B)),     FILTER(_rngA,COUNTIF(_rngB,_rngA)=0) )

もしくは REDUCE関数を使う。

=IFERROR(REDUCE(,TAKE(A:A,COUNTA(A:A)),
    LAMBDA(x,y,IF(COUNTIF(TAKE(B:B,COUNTA(B:B)),y),x,VSTACK(x,y)))),""
)

可能ならテーブル書式を入れて構造化参照にしたほうがいい。

=FILTER(
    テーブル1[列1],
    (COUNTIF(テーブル2[列1],テーブル1[列1])=0)*(テーブル1[列1]<>"")
)

もっともテーブル書式を設定するくらいなら、「クエリでやんなよ」って話になるんだけど。