🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

ExcelのMAXIFS & MINIFS関数 — 配列数式なしの条件付き最大・最小

|

ExcelのMAXIFS & MINIFS関数 — 配列数式なしの条件付き最大・最小

要点MAXIFS(max_range, criteria_range1, criteria1, …) は、すべての条件を 通過した行だけを見て、max_range の中の最大値を返します。MINIFS は最小値を 返します。これらは入り口に用心棒を立てた MAX/MIN です——条件を満たす行だけが数に 入れてもらえます。厄介な {=MAX(IF(…))} 配列数式を、1つの普通の関数で置き換えます。

=MAXIFS(C2:C100, A2:A100, "West")                       ' West 地域で最も高い売上
=MINIFS(C2:C100, A2:A100, "West", B2:B100, ">="&E1)     ' 日付/しきい値も満たす中で最も低い値
=MAXIFS(C2:C100, D2:D100, "Closed")                     ' 成約済みで最大の取引

「地域 = West の中で最も高い値」を得るために Ctrl+Shift+Enter の配列数式に手を伸ばした ことがあるなら、MAXIFS はそれを過去のものにした関数です。SUMIFSCOUNTIFSAVERAGEIFS と同じ一族に属し——同じ条件の書き方、 同じ AND ロジック——なので、1つを知っていれば、ほぼすべてを知っているようなものです。

この記事でわかること

  • 考え方の軸:条件でフィルタした MAX/MIN
  • SUMIF ユーザーがつまずく引数の順序(結果の範囲がに来る)
  • 条件の書き方——COUNTIF/SUMIFS とまったく同じ文字列ルール
  • なぜ古い {=MAX(IF(…))} 配列数式を置き換えるのか
  • 一致する行がないときの静かな 0 の罠と、その捕まえ方

考え方の軸:手前にフィルタを置いた MAX/MIN

素の MAX は範囲内のすべての数値を見ます。MAXIFS は その手前にフィルタを置きます:「最大値を見つけて——ただしこれらの条件を満たす行の中 だけで」。MAXIFS に関する他のことは、すべてこの1つの考えから導かれます。

=MAXIFS(C2:C100, A2:A100, "West", B2:B100, ">100")
'        ▲ ここで最大を探す   ▲ ただし region="West" かつ amount>100 の行だけ

複数の条件は AND で結合されます——行はそのすべてを通過しなければ考慮されません。 SUMIFS や COUNTIFS とまったく同じです。組み込みの OR オプションはありません。OR が必要 なら、2つの別々の MAXIFS 呼び出しの MAX を取るか、データを組み替えます。

人がつまずく引数の順序

SUMIFCOUNTIF から来た人みんなを捕まえるのが、この点です:-IFS 一族では、 測りたい範囲が先に来て、それから条件のペアが続きます:

=MAXIFS(max_range, criteria_range1, criteria1, [criteria_range2, criteria2], …)
'        ▲ 結果     ▲ どこで…        ▲ 等しい  ▲ かつどこで…     ▲ 等しい

これを、合計する範囲が最後の省略可能な引数である、古い単一条件の関数と比べてみて ください:

=SUMIF(criteria_range, criteria, [sum_range])     ' 結果の範囲が最後
=MAXIFS(max_range, criteria_range, criteria)      ' 結果の範囲が最初

SUMIF-IFS 関数のあいだのこの不統一は、Excel の紛れもない設計上のいぼであり、 MAXIFS で最も多い間違いの原因です:max の範囲を置くべき場所に criteria の範囲を置いて しまうのです。一度覚えてしまいましょう——-IFS 関数は必ず、答えが欲しい範囲から始まる ——そうすれば噛まれなくなります。

条件は COUNTIF や SUMIFS とまったく同じ

条件そのものについて、新しく学ぶことは何もありません。条件は文字列として書き、演算子は 引用符の内側に入れ、セル参照は & で連結します——COUNTIFSUMIFS と同じルールです:

=MAXIFS(C2:C100, C2:C100, ">0")                 ' 最大の正の値
=MAXIFS(C2:C100, B2:B100, ">"&E1)               ' セル E1 のしきい値
=MAXIFS(C2:C100, A2:A100, "West*")              ' テキスト条件のワイルドカード
=MINIFS(D2:D100, A2:A100, "West", C2:C100, ">="&DATE(2026,1,1))  ' 日付でも安全

COUNTIF や SUMIFS で条件を組んでいるなら、ここでも同じように組みます——演算子を引用符で 囲み、& でセルの値を差し込み、ロケールに依存しない日付比較には DATE() を使います。

なぜ配列数式を置き換えたのか

Excel 2019 より前、「条件付きの最大」は Ctrl+Shift+Enter で入力する配列数式を意味しました:

{=MAX(IF(A2:A100="West", C2:C100))}     ' 昔のやり方——CSE 配列数式
=MAXIFS(C2:C100, A2:A100, "West")       ' 新しいやり方——1つの普通の関数

昔の形も動きますが、本物の重荷を背負っています:中括弧での入力を覚えておかねばならず、 次の読み手には不透明で、配列として再入力せずに編集すると簡単に壊れます。MAXIFS はそれら すべてを、誰でも読んで編集できる普通の関数に畳み込みます。これこそがこの関数の要点です ——賢いやり方で計算できてしまう結果を、代わりに退屈で長持ちするやり方で書くのです。

バージョンに関する注意が1つ:MAXIFS と MINIFS には Excel 2019 または Microsoft 365 が 必要です。 Excel 2016 以前には存在せず、{=MAX(IF(…))} 配列数式か、 AGGREGATE を使った方法に戻ることになります。

静かな 0 の罠

これは、レポートをひそかに汚染する失敗モードです。条件に一致する行が1つもないとき、 MAXIFS と MINIFS は 0 を返します——#N/A でも、空白でも、エラーでもありません。

=MAXIFS(C2:C100, A2:A100, "Antarctica")     ' そんな地域はない  ->  0

データが負の値を含みうるなら(気温、損益、調整額など)、その 0です:本物の負の 値の上に座っているまっとうな最大値のように、あるいは正の値の下にあるまっとうな最小値の ように見えてしまいます。誰もエラーを見ないので、誰も確認しません。まず、一致した行がある かどうかを調べて守りましょう:

=IF(COUNTIFS(A2:A100,"West")=0, "No data", MAXIFS(C2:C100, A2:A100, "West"))

数値を信頼する前に、COUNTIFS同じ条件で使って 「何か一致した?」と尋ねます。これこそが、堅牢な条件付き最大の数式と、0 を本物の値として 静かに報告してしまう数式とを分ける、たった1つのチェックです。

判断のポイント

MAXIFS と MINIFS は、{=MAX(IF(…))} を書きたくなるほとんどあらゆる場面で、正しい答え です。配列数式に残された正当な理由は、きっかり2つだけです:Excel 2016 以前を使っているか、 AND のみの -IFS 一族では表現できない、条件をまたぐ OR ロジックが必要か。それ以外はすべて ——単一または複数の AND 条件、セルからのしきい値、日付の範囲——MAXIFS/MINIFS のものです。 次の人が読んで編集できる普通の関数は、賢い配列数式に毎回勝るからです。ただし、負になりうる データでは、一致が存在すると確認するまで生の結果を決して信頼しないこと。この2つの習慣を 身につければ——結果の範囲を先に、そして一致なしの 0 を守る——条件付きの極値は、静かで 気づかれないエラーの温床ではなくなります。

ExcelMaster の使いどころ

MAXIFS が間違える2つの道——引数の順序の逆転と、一致なしの静かな 0——は、まさに数式が 決して警告してくれないことです。ExcelMaster はその両方を自動で正しく扱います:結果の 範囲を先に置き、あなたの SUMIFS と同じ &DATE() のルールで条件を組み立て、空の結果が 誤解を招く 0 ではなく「No data」と読めるように、数式を一致チェックで包みます。「今年の West 地域からの最大の注文」や「サプライヤーごとの最低価格」と頼めば、そのままレポートに 載せられる条件付き最大を返します——あなたがおそらく忘れていたであろうガードも込みで。

よくある質問

ExcelでMAXIFSを使うには?

=MAXIFS(max_range, criteria_range1, criteria1, …) は、すべての条件を満たす行の中から max_range の最大値を返します。たとえば =MAXIFS(C2:C100, A2:A100, "West") は、A 列が "West" に等しい行の C 列の最大値を返します。MINIFS は最小値について同じように動きます。

MAXIFS が 0 を返すのはなぜ?

条件に一致する行が1つもないからです——MAXIFS と MINIFS は、該当がないとき(エラーでは なく)0 を返します。負の値を含むデータでは、これが本物の結果のように見えます。まず COUNTIFS で調べましょう: =IF(COUNTIFS(…)=0,"No data",MAXIFS(…))

MAXIFS と SUMIF の引数の順序は?

MAXIFS は(すべての -IFS 関数と同じく)結果の範囲を先に置きます: MAXIFS(max_range, criteria_range, criteria)。古い SUMIF は結果の範囲を最後に 置きます:SUMIF(criteria_range, criteria, [sum_range])。この2つを取り違えるのが最も 多い間違いです。

MAXIFS は複数の条件を使えますか?

はい。criteria_range, criteria のペアを追加します——それらは AND で結合されるので、 行は考慮されるためにすべての条件を満たさなければなりません: =MAXIFS(C:C, A:A, "West", B:B, ">100")。組み込みの OR はありません。OR には、別々の MAXIFS 呼び出しの MAX を取ります。

Excel 2016 で MAXIFS の代わりに何を使えますか?

MAXIFS には Excel 2019 または Microsoft 365 が必要です。Excel 2016 では、Ctrl+Shift+Enter で入力する配列数式 {=MAX(IF(condition, range))} か、 AGGREGATE を使った数式を使ってください。

検証環境

検証環境: Excel 365 (Windows 11) — 最終確認 2026-07-08。

関連ガイド: ExcelのSUMIFS関数 · ExcelのCOUNTIFS関数 · ExcelのAVERAGEIFS関数 · ExcelのAGGREGATE関数