概要
「田中さんの売上の中で一番高い金額は?」
「東京支店の最大受注額は?」
「2024年の中で、商品Aの最高売上は?」
こういう “条件付きで最大値を取りたい” 場面で使うのが MAXIFS 関数です。
MAXIFS は、「複数条件をすべて満たすデータだけ」を対象にして、その中から最大値を返してくれます。
MAXIFS の基本(書式と考え方)
書式
MAXIFS の基本形は次の通りです。
=MAXIFS(最大値範囲, 条件範囲1, 条件1, [条件範囲2, 条件2], …)
最初の引数が「最大値を取りたい範囲」です。
その後ろに「条件範囲」「条件」をペアでいくつでも続けて書きます。
考え方はこうです。
- 条件範囲・条件のペアをすべてチェックする。
- すべての条件を満たした行だけを候補として残す。
- その行に対応する「最大値範囲」の中から、最大値を返す。
つまり、「条件は全部 AND(かつ)」という動きです。
文字条件での MAXIFS(担当者・支店ごとの最大値)
担当者ごとの最大売上を求める
次のような表を想定します。
A列:担当者
B列:売上
「田中さんの売上の中で最大の金額」を求めるには、次のように書きます。
=MAXIFS(B2:B100, A2:A100, "田中")
B2:B100 が「最大値を取りたい範囲(売上)」
A2:A100 で「担当者が田中の行だけ」を絞り込み、
その中から B の最大値を返します。
支店ごとの最大売上(東京支店だけ)
A列:支店
C列:売上
「東京支店の最大売上」は、次のように書きます。
=MAXIFS(C2:C100, A2:A100, "東京")
A列が「東京」の行だけを対象に、C列の最大値を返します。
数値条件での MAXIFS(しきい値+最大値)
基準以上の中で最大値を出す
B列:売上
「売上が 100,000 以上の行の中で最大の売上」を知りたい場合は、こう書きます。
=MAXIFS(B2:B100, B2:B100, ">=100000")
B2:B100 の中から「100,000 以上」の値だけを候補にして、その中の最大値を返します。
不等号を使う条件(”>=100000″ など)は、必ず文字列として “” で囲みます。
日付の範囲で最大値(2024年の最大売上)
A列:日付
B列:売上
「2024年の売上のうち最大値」を出すには、同じ日付列に上下限の条件をかけます。
=MAXIFS(B2:B100,
A2:A100, ">=2024/1/1",
A2:A100, "<=2024/12/31")
A列が 2024/1/1 以上、かつ 2024/12/31 以下の行だけを対象に、B列の最大値を返します。
文字+数値の複合条件で最大値を出す
担当者 × 支店 × 売上条件の最大値
A列:担当者
B列:支店
C列:売上
「担当者が田中 かつ 支店が東京 かつ 売上が 50,000 以上」の中で最大の売上を知りたい場合は、次のように書きます。
=MAXIFS(C2:C100,
A2:A100, "田中",
B2:B100, "東京",
C2:C100, ">=50000")
すべての条件を満たした行の C列だけが候補となり、その最大値が返されます。
部分一致(“田中”を含む担当者)の最大値
担当者に「田中太郎」「田中花子」などがいて、「名前に“田中”を含む人の最大売上」を出したい場合は、ワイルドカードを使います。
=MAXIFS(C2:C100, A2:A100, "*田中*")
「田中」は「田中を含むすべての文字列」という条件です。
セル参照と組み合わせた MAXIFS(柔軟に条件を変える)
条件をセルから指定する
A列:担当者
C列:売上
E2:担当者名(入力セル)
「E2 に入力された担当者の最大売上」を求めるには、次のように書きます。
=MAXIFS(C2:C100, A2:A100, E2)
E2 の内容を変えるだけで、別の担当者の最大値をすぐに確認できます。
数値条件+セル参照
B列:売上
E2:基準金額
「売上が E2 の値以上の行だけの“最大売上”」を出す場合は、次のように書きます。
=MAXIFS(B2:B100, B2:B100, ">="&E2)
“>=” と E2 を & で連結して、例えば E2=100000 なら “>=100000” という条件文字列になります。
MAXIFS を使うときの注意点・コツ
最大値範囲と条件範囲の行数は必ず揃える
C2:C100 を最大値範囲にしているのに、条件範囲を A3:A101 のようにずらしてしまうと、まったく別の行同士を対応させてしまいます。
SUMIFS や AVERAGEIFS と同様、「すべての範囲の開始行・終了行が一致しているか」を必ずチェックしてください。
条件はすべて AND 条件(かつ)
MAXIFS に書いた条件は、「条件1 かつ 条件2 かつ 条件3…」という AND 条件になります。
「商品がA または B の最大値」のような OR 条件にしたい場合は、MAX 関数を組み合わせるなど、別の工夫(MAXIFS を2つ書いて MAX で包むなど)が必要です。
対象が1件もないときはエラーになる
条件を厳しくしすぎて、1行も該当データがない場合、MAXIFS はエラー(#DIV/0! や #VALUE! ではなく #N/A に近い動き)になります。
実運用では IFERROR と組み合わせて「該当なし」のようなメッセージを返すことも多いです。
=IFERROR(
MAXIFS(C2:C100, A2:A100, "田中"),
"該当データなし"
)
例題
問題1
A2:A100 に担当者名、B2:B100 に売上が入っています。
「担当者が田中」の売上の中で最大値を求める MAXIFS の式を書いてください。
=MAXIFS(B2:B100, A2:A100, "田中")
問題2
A2:A100 に支店名、C2:C100 に売上が入っています。
「支店が東京」の売上の中で最大値を求める式を書いてください。
=MAXIFS(C2:C100, A2:A100, "東京")
問題3
A2:A100 に日付、B2:B100 に売上が入っています。
「2024/1/1 以上 かつ 2024/12/31 以下」の日付の行の中で、売上の最大値を求める式を書いてください。
=MAXIFS(B2:B100,
A2:A100, ">=2024/1/1",
A2:A100, "<=2024/12/31")
問題4
A2:A100 に担当者名、B2:B100 に支店名、C2:C100 に売上が入っています。
「担当者が田中 かつ 支店が東京」の売上の最大値を求める式を書いてください。
=MAXIFS(C2:C100,
A2:A100, "田中",
B2:B100, "東京")
問題5
B2:B100 に売上が入っており、E2 に基準金額が入力されています。
「売上が E2 の値以上」の行の中で、最大の売上を求める MAXIFS の式を書いてください。
=MAXIFS(B2:B100, B2:B100, ">="&E2)
まとめ
MAXIFS は、「複数の条件をすべて満たすデータの中から最大値を返す」関数です。
書式は次の形を頭に入れておくと、そのまま応用できます。
=MAXIFS(最大値範囲,
条件範囲1, 条件1,
条件範囲2, 条件2, …)
SUMIFS や AVERAGEIFS と並ぶ「条件付き集計三兄弟」のひとつなので、
一緒に使いこなせるようになると、
「誰の、どの支店の、どの期間の、どの条件の最大値か?」を自在に聞けるようになります。
