スプレッドシートのMAXIFS関数の使い方|条件付き最大値
「部署ごとの最高売上を出したいのに、MAX関数だと全体の最大値しか取れない」。そんな経験はありませんか?
条件を指定できないと、フィルターで絞ってから手作業で確認する羽目になります。データ量が多いほど手間がかかりますよね。
MAXIFS関数を使えば、条件付きで最大値を取り出せます。この記事では基本の書き方から複数条件の応用例まで丁寧に解説します。
MAXIFS関数とは?条件付きで最大値を返す関数
MAXIFS関数は、条件に合うデータだけを対象にして最大値を返す関数です。読み方は「マックスイフス」。Maximum + If + S(複数条件)が名前の由来です。
MAX関数は「範囲全体の最大値」を返す関数です。一方MAXIFSは「条件を満たすデータの最大値」を返します。たとえば「東京支店だけの最高売上」を取り出せます。
基本構文
=MAXIFS(最大値範囲, 条件範囲1, 条件1, [条件範囲2, 条件2, ...])
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 最大値範囲 | 必須 | 最大値を求める対象の数値範囲 |
| 条件範囲1 | 必須 | 条件を調べるセル範囲 |
| 条件1 | 必須 | 抽出条件(文字列・数値・比較式) |
| 条件範囲2, 条件2 | 任意 | 追加の条件(最大127組まで) |
TIP
引数の順番はSUMIFS関数と同じです。「対象範囲が先頭、その後に条件ペア」と覚えてください。
基本的な使い方|1つの条件で最大値を取り出す
ここからはサンプルデータを使って説明します。
| A列(担当) | B列(部署) | C列(月) | D列(売上) | |
|---|---|---|---|---|
| 2行目 | 田中 | 東京 | 1月 | 850,000 |
| 3行目 | 鈴木 | 大阪 | 1月 | 720,000 |
| 4行目 | 佐藤 | 東京 | 1月 | 930,000 |
| 5行目 | 田中 | 東京 | 2月 | 780,000 |
| 6行目 | 鈴木 | 大阪 | 2月 | 880,000 |
| 7行目 | 佐藤 | 東京 | 2月 | 1,050,000 |
| 8行目 | 田中 | 東京 | 3月 | 920,000 |
| 9行目 | 鈴木 | 大阪 | 3月 | 750,000 |
| 10行目 | 佐藤 | 東京 | 3月 | 980,000 |
部署ごとの最高売上を求める
東京支店の最高売上額を取り出してみましょう。
=MAXIFS(D2:D10, B2:B10, "東京")
結果は 1,050,000 です。B列が「東京」のデータ(6件)のうち、D列の最大値を返しています。
数式の読み方はこうです。
- D2:D10 → 最大値を求める範囲(売上列)
- B2:B10 → 条件を調べる範囲(部署列)
- “東京” → 条件(部署が東京)
大阪の最高売上も同様に求められます。
=MAXIFS(D2:D10, B2:B10, "大阪")
結果は 880,000 です。
複数条件での使い方|2つ以上の条件を組み合わせる
MAXIFS関数は条件を追加するだけで複数条件に対応できます。
部署 × 月で絞り込む
「東京支店の1月の最高売上」を求める場合です。
=MAXIFS(D2:D10, B2:B10, "東京", C2:C10, "1月")
結果は 930,000 です。部署が「東京」かつ月が「1月」のデータは田中(850,000)と佐藤(930,000)の2件。そのうち大きい方が返ります。
比較演算子を使う
「売上が80万円以上のデータのうち最大値」のような条件も書けます。
=MAXIFS(D2:D10, D2:D10, ">=800000")
結果は 1,050,000 です。比較演算子は条件をダブルクォーテーションで囲んでください。
使える比較演算子は次のとおりです。
| 演算子 | 意味 | 書き方の例 |
|---|---|---|
| >= | 以上 | “>=800000” |
| <= | 以下 | “<=500000" |
| > | より大きい | “>1000000” |
| < | より小さい | “<100000" |
| <> | 等しくない | “<>東京” |
ワイルドカードを使う
条件にワイルドカード(*、?)を使った部分一致もできます。
=MAXIFS(D2:D10, A2:A10, "田*")
この式は担当名が「田」で始まる人の最高売上を返します。結果は 920,000(田中の3月売上)です。
MINIFSとのセット使い|最大値と最小値を同時に把握
MINIFS関数はMAXIFS関数の「最小値バージョン」です。構文はまったく同じで、返す値が最大値か最小値かの違いだけです。
=MAXIFS(D2:D10, B2:B10, "東京") → 1,050,000(最大値)
=MINIFS(D2:D10, B2:B10, "東京") → 780,000(最小値)
この2つをセットで使うと、部署ごとの「売上レンジ」がわかります。
=MAXIFS(D2:D10, B2:B10, "東京") - MINIFS(D2:D10, B2:B10, "東京")
結果は 270,000 です。最大値と最小値の差から、データのばらつきを把握できます。
| 関数 | 返す値 | 使いどころ |
|---|---|---|
| MAXIFS | 条件付き最大値 | 部署別の最高売上、最高点 |
| MINIFS | 条件付き最小値 | 部署別の最低売上、最低点 |
| MAX | 範囲全体の最大値 | 全データの最高値 |
| MIN | 範囲全体の最小値 | 全データの最低値 |
よくあるエラーと対処法
MAXIFS関数で困りやすいポイントを2つ紹介します。
結果が0になる(条件に一致するデータがない)
MAXIFS関数は、条件に合うデータが1件もないと0を返します。
=MAXIFS(D2:D10, B2:B10, "名古屋")
サンプルデータに「名古屋」はないので、結果は 0 です。
「0は正しい最大値なのか、それとも該当なしなのか」を区別したい場合はCOUNTIFS関数と組み合わせてください。
=IF(COUNTIFS(B2:B10, "名古屋")=0, "該当なし", MAXIFS(D2:D10, B2:B10, "名古屋"))
#VALUE! エラー(範囲サイズの不一致)
最大値範囲と条件範囲の行数が異なると#VALUE!エラーになります。
=MAXIFS(D2:D10, B2:B5, "東京") → #VALUE!
D2:D10は9行、B2:B5は4行なので不一致です。すべての範囲の行数を揃えてください。
NOTE
IFS系関数に共通するルールです。SUMIFS・AVERAGEIFSでも同じエラーが起きます。
IFS系関数の引数は同じパターン|一度覚えれば応用できる
MAXIFS関数の引数の順番は、他のIFS系関数と共通です。
| 関数 | 第1引数 | 第2引数 | 第3引数 |
|---|---|---|---|
| SUMIFS | 合計範囲 | 条件範囲1 | 条件1 |
| AVERAGEIFS | 平均範囲 | 条件範囲1 | 条件1 |
| MAXIFS | 最大値範囲 | 条件範囲1 | 条件1 |
| MINIFS | 最小値範囲 | 条件範囲1 | 条件1 |
| COUNTIFS | 条件範囲1 | 条件1 | ― |
共通パターンは「対象範囲が先頭、その後に条件ペア」です。COUNTIFSだけは数えるだけなので対象範囲がありません。
この構造を覚えておけば、新しいIFS系関数も迷わず使えますよ。
まとめ
MAXIFS関数は「条件を指定して最大値を取り出す」関数です。MAXだけでは実現できなかった「部署別」「期間別」の最大値が、1つの数式で求められます。
この記事のポイント
- 構文は
=MAXIFS(最大値範囲, 条件範囲1, 条件1, ...) - 条件ペアを追加するだけで複数条件にも対応
- MINIFSとセットで使うと最大値・最小値を同時に把握できる
- 結果が0なら条件一致データなし、#VALUE!なら範囲サイズを確認
- 引数の並びはSUMIFS・AVERAGEIFSと同じ
次のステップ:関連する集計関数
MAXIFS関数の使い方がわかったら、同じIFS系の関数もあわせて覚えてみてください。引数の構造が同じなので、すぐに使いこなせるようになりますよ。
