【Excel】MAXIFS関数とMINIFS関数で条件に合う最大値・最小値を求める方法

この記事は約6分で読めます。

今回は、ExcelのMAXIFS関数とMINIFS関数を使って、条件に合うデータの中から最大値や最小値を求める方法を紹介します。

この記事は、Microsoft 365またはOffice 2019以降のExcel(Windows版・Mac版)を前提にしています。Excel 2016以前のバージョンでは、MAXIFS関数とMINIFS関数は使えません。

MAXIFS関数・MINIFS関数とは

売上表や在庫表を扱っていると、「東京支店の中で一番大きい売上はいくらか」「A商品の最安の仕入れ値はいくらか」のように、条件付きで最大値や最小値を知りたい場面があります。MAX関数やMIN関数は範囲全体の最大・最小を求める関数なので、条件で絞り込むには工夫が必要でした。

そこで便利なのが、条件に合うセルだけを対象に最大値を返すMAXIFS関数と、同じく最小値を返すMINIFS関数です。条件は1つでも複数でも指定でき、SUMIFS関数やAVERAGEIFS関数と同じ考え方で使えます。

MAXIFS関数の書式

MAXIFS関数は次の形で入力します。

=MAXIFS(最大範囲, 条件範囲1, 条件1, [条件範囲2, 条件2], …)

  • 最大範囲:最大値を探したい数値が入っている範囲です。
  • 条件範囲1:条件に合うかどうかを判定する範囲です。
  • 条件1:数値、比較式、文字列などで指定する条件です。
  • 条件範囲2, 条件2 以降:必要に応じて追加する条件です。省略できます。

MINIFS関数の書式

MINIFS関数も、引数の並びは同じです。

=MINIFS(最小範囲, 条件範囲1, 条件1, [条件範囲2, 条件2], …)

最初の引数が「最小値を探す範囲」に変わるだけなので、どちらか一方を覚えればもう一方もそのまま使えます。

基本の使い方

たとえば、A列に支店名、B列に担当者名、C列に売上金額が入った表があるとします。データは2行目から20行目までです。

1つの条件で最大値を求める

「東京」支店の売上の最大値を求めるには、次のように入力します。

=MAXIFS(C2:C20, A2:A20, “東京”)

A列が「東京」の行だけを対象に、C列の中で一番大きい値が返されます。

1つの条件で最小値を求める

同じく「東京」支店の売上の最小値なら、関数名を変えるだけです。

=MINIFS(C2:C20, A2:A20, “東京”)

条件をセル参照にする

条件を数式の中に直接書くと、支店を変えるたびに数式を修正しなければなりません。たとえばE2セルに支店名を入力しておき、次のように参照させると便利です。

=MAXIFS(C2:C20, A2:A20, E2)

E2の支店名を書き換えるだけで結果が切り替わるため、集計表を使い回しやすくなります。E列に支店名を縦に並べ、数式をコピーすれば、支店ごとの最大値一覧も手早く作れます。その際は、範囲がずれないように$記号で絶対参照にしておきましょう。

=MAXIFS($C$2:$C$20, $A$2:$A$20, E2)

複数の条件を組み合わせる

MAXIFS関数とMINIFS関数は、条件範囲と条件の組を追加していくことで複数条件に対応できます。指定したすべての条件を満たす行だけが対象になります。

たとえば、D列に日付が入っている表で「東京支店」かつ「2026年4月1日以降」の売上の最大値を求めるなら、次のように書けます。

=MAXIFS(C2:C20, A2:A20, “東京”, D2:D20, “>=2026/4/1”)

比較演算子を使った条件

条件には比較演算子が使えます。代表的なものは次のとおりです。

  • “>100″:100より大きい
  • “>=100″:100以上
  • “<100″:100未満
  • “<>東京”:東京以外

比較演算子とセルの値を組み合わせたい場合は、演算子を文字列にして&でセル参照とつなぐのがコツです。たとえばF2セルの日付以降を対象にするなら、”>=”&F2 と書きます。”>=F2″ と書くと「F2」という文字そのものと比較してしまうので注意が必要です。

=MINIFS(C2:C20, A2:A20, E2, D2:D20, “>=”&F2)

使うときの注意点

範囲の大きさと形をそろえる

最大範囲(最小範囲)と各条件範囲は、行数・列数が同じ大きさと形である必要があります。たとえば最大範囲がC2:C20なのに条件範囲をA2:A19にしてしまうと、#VALUE!エラーになります。エラーが出たときは、まず範囲の指定を見比べてみてください。

テーブル機能(Ctrl+T)を使って表をテーブルに変換し、列単位で範囲を指定すると、行を追加したときにも範囲が自動で広がるため、指定のずれを防ぎやすくなります。

条件に合うデータがないと0が返る

条件に一致するセルが1つもない場合、MAXIFS関数やMINIFS関数はエラーではなく0を返します。売上の最小値を求めたつもりが0と表示された場合、本当に0円のデータがあるのか、条件に合うデータがないだけなのか、見た目では区別できません。

確認したいときは、同じ条件でCOUNTIFS関数を使い、該当件数を並べて表示しておくと判断しやすくなります。件数が0なら「該当なし」と考えられます。

条件のセルが空欄の場合

条件にセル参照を指定していて、そのセルが空欄になっていると、空欄は0として扱われます。条件セルの入力を忘れたまま数式を使うと、意図しない結果になることがあります。入力欄の色を変えておくなど、空欄に気づきやすくする工夫をしておくと安心です。

文字列の表記ゆれに気をつける

条件に文字列を使う場合、「東京」と「東京 」(末尾にスペース)のような表記ゆれがあると、一致しないデータが出てきます。結果が想定より少ない、あるいは0になる場合は、元データの表記をそろえることも検討してください。

活用のアイデア

MAXIFS関数とMINIFS関数は、身近な表でもさまざまな使い道があります。

  • 担当者別の最高売上:担当者名を条件に、各担当者の一番よい実績を一覧にする
  • 商品別の最安仕入れ値:商品名を条件に、仕入れ値の最小値を確認する
  • 期間内の最新日付:日付列を最大範囲にすると、条件に合う中で一番新しい日付を取り出せる(結果のセルは日付の表示形式にする)
  • 期間内の最も早い日付:同様にMINIFS関数で、最初の取引日などを求める

特に日付の活用は見落とされがちですが、Excelの日付は内部的に数値として扱われているため、MAXIFS関数で「顧客ごとの最終取引日」を求めるといった使い方ができます。結果が数字で表示された場合は、セルの表示形式を日付に変更してください。

まとめ

MAXIFS関数とMINIFS関数を使うと、条件に合うデータだけを対象に最大値・最小値を求められます。ポイントを振り返っておきましょう。

  • MAXIFS関数は条件付きの最大値、MINIFS関数は条件付きの最小値を返す
  • 引数は「対象範囲, 条件範囲, 条件」の順で、条件の組を追加すれば複数条件にできる
  • 条件はセル参照にすると集計表を使い回しやすい
  • 比較演算子とセル参照は “>=”&F2 のように&でつなぐ
  • 範囲の大きさがそろっていないと#VALUE!エラーになる
  • 該当データがないと0が返るので、必要に応じてCOUNTIFS関数で件数を確認する
  • Microsoft 365またはOffice 2019以降で利用できる

条件付きの集計はSUMIFS関数やCOUNTIFS関数とあわせて覚えておくと、表から読み取れる情報が増えます。まずは手元の表で、1つの条件から試してみてください。