要点 —
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 はそれを過去のものにした関数です。SUMIFS、 COUNTIFS、 AVERAGEIFS と同じ一族に属し——同じ条件の書き方、 同じ 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 を取るか、データを組み替えます。
人がつまずく引数の順序
SUMIF や COUNTIF から来た人みんなを捕まえるのが、この点です:-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 とまったく同じ
条件そのものについて、新しく学ぶことは何もありません。条件は文字列として書き、演算子は
引用符の内側に入れ、セル参照は & で連結します——COUNTIF
や SUMIFS と同じルールです:
=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関数
