Excelには、条件付きの最大値/最小値を求める関数として、「MAXIFS」や「MINIFS」といった関数が用意されている。これらの関数はExcel 2019の時代に実装されたもので、実は意外と新しい関数になる。そのほか、関連する話として、関数COUNTIFSを使って「分類別のランキング」を求める方法も紹介しておこう。
条件付きの最大値、最小値を求める関数MAXIFS、MINIFS
条件を指定して最大値/最小値を求めたい場合もあるだろう。このような場合に活用できるのが「MAXIFS」や「MINIFS」といった関数だ。これらの関数は「条件付きのランキング第1位」を求める関数と考えることもできる。では、第2位や第3位などのデータを求めたい場合はどうすればよいだろうか? このような場合は関数COUNTIFSが活用できる。その手順を詳しく解説していこう。
今回は、以下の図に示したデータ表を例に具体的な手順を紹介していこう。この表は、3つの店舗(新宿/池袋/渋谷)を構える飲食店の各日の売上を「ランチ」と「ディナー」に分けて集計したものだ。
まずは、各店舗の「ランチ」について「最高売上」と「最低売上」を求めてみよう。このように、条件付きで「最大値」や「最小値」を求めるときは、「MAXIFS」や「MINIFS」といった関数を使用すればよい。
◆関数MAXIFSの書式
=MAXIFS(最大範囲, 条件範囲1, 条件1, [条件範囲2], [条件2], …)
◆関数MINIFSの書式
=MINIFS(最小範囲, 条件範囲1, 条件1, [条件範囲2], [条件2], …)
基本的な使い方はSUMIFSやAVERAGEIFSと同じで、第1引数に「対象とするセル範囲」、以降に「条件」と「その条件に対応するセル範囲」を2個1組で指定していく仕様になっている。
具体的な例を示していこう。たとえば、「新宿店」の「ランチ」を条件に「売上金額の最大値」を求めるときは、以下のように関数MAXIFSを記述すればよい。
簡単に解説しておこう。今回の例は、それぞれのデータが50行目まで入力されている。よって、「E9:E50」の中から「売上金額の最大値」を探すことになる。このセル範囲を第1引数に指定する。
続いて、店舗が「新宿店」という条件を指定する。店舗のデータは「C9:C50」のセル範囲に入力されているので、この記述は「C9:C50,"新宿店"」となる。
さらに、時間帯が「ランチ」という条件を追加する。時間帯のデータは「D9:D50」のセル範囲に入力されているので、この記述は「D9:D50,"ランチ"」となる。
その後、「Enter」キーを押して関数MAXIFSを実行すると、以下の図のような結果が表示された。つまり、「新宿店」の「ランチ」の最大売上は16万2,570円ということになる。
参考までに、他の項目についても関数の記述を紹介しておこう。たとえば、「池袋店」の「ランチ」について最大値を求めるときは、以下の図のように関数を記述すればよい。"新宿店"を"池袋店"に書き換えるだけなので、先ほどの記述を「数式バー」でコピーし、それを再利用してもよい。
もちろん、関数MINIFSを使って最低売上を求めることも可能だ。引数の指定方法は関数MAXIFSと同じなので、詳しく解説しなくても内容を理解できるだろう。
同様の手順で関数を入力していくと、各店舗の「ランチ」について「最大売上」と「最小売上」を求めることができる。
これらの関数は「SUMIFS」や「AVERAGEIFS」とよく似た書式になるため、xxxIFS系の関数に慣れている方なら、すぐに「MAXIFS」や「MINIFS」も使えるようになるだろう。
少しだけ余談を追加しておこう。「SUMIFS」や「AVERAGEIFS」は、Excel 2010で実装された“それなりに歴史のある関数"といえる。一方、「MAXIFS」や「MINIFS」が実装されているのはExcel 2019以降、またはMicrosoft 365となる。使い方の似ている関数であるが、「MAXIFS」や「MINIFS」が登場したのは意外と最近のことだ。また、条件を1つだけ指定する「MAXIF」や「MINIF」が用意されていないことにも注意しておく必要がある。