データをグループ(ある列の値)で区別して、グループごとの最大値の行を抽出する方法も併せて紹介します。
最大値がある行を抽出する方法
次の画像の左側の表には担当者の氏名と売上の数値が記録されています。
そこで、E3セルに次のような式を入力し、売上の数値が最大である者の行を抽出しています。
E3セル
=FILTER(B3:C12,C3:C12=MAX(C3:C12))
条件に該当する行を抽出するFILTER関数と最大値を求めるMAX関数を併用して、各行のC列(売上)の数値が最大値に一致するかどうか判定し、一致する行のみを抽出しています。
なお、MAX関数をMIN関数に代えれば最小値の行を抽出できます。
最大値が2つ以上ある場合はすべての行が抽出されます。
次の画像(上の画像から、C6セルの値を520に変更したものです)では売上が最大の者が2名いますが、いずれも抽出されています。
グループごとの最大値がある行を抽出する方法
ある列の値によりグループを区別して、グループごとの最大値の行を抽出する例です。
次の画像中の表には、氏名と売上のほかに部署名の列があります。
そこで、F3セルに次のような式を入力し、部署ごとに売上が最大である担当者の行を抽出しています。ただし「営業二課」については売上が最大である者が2名いるので2つの行が抽出されています。同様に3名以上いる場合もすべて抽出されます。
F3セル
=FILTER(B3:D12,D3:D12=MAXIFS(D3:D12,B3:B12,B3:B12))
FILTER関数と、条件付きの最大値を求めるMAXIFS関数を使っています。各行について数値がグループ中の最大値に等しいかどうか判定し、該当する行を抽出しています。よって該当する行が複数ある場合はすべて抽出されます。
もちろんMAXIFS関数をMINIFS関数に代えれば最小値の行を抽出できます。
第2引数(抽出条件)がちょっとややこしいですが、各行について次のような式が実行され真偽(抽出対象になるかどうか)が判定されます。
D3=MAXIFS(D3:D12,B3:B12,B3) D4=MAXIFS(D3:D12,B3:B12,B4) ・・・ D12=MAXIFS(D3:D12,B3:B12,B12)