ExcelのMAX関数の使い方|最大値を求める基本から実務活用まで解説
テストの最高点、月間の最大売上、在庫数のピーク値。「この中で一番大きい数字はどれ?」と調べたい場面、仕事でよく出てきますよね。
そのたびに並べ替えや目視で数字を追いかけていませんか? データが数十行、数百行になると時間もかかりますし、見落としも起きやすくなります。
MAX関数を使えば、どんなに大きな表でも最大値を一瞬で取り出せます。 この記事では基本の書き方から実務で役立つ応用パターン、よくあるトラブルの解決法まで解説していきます。
MAX関数とは?読み方と基本の仕組み
MAX関数は、指定した範囲の中から最大の数値を1つ返す関数です。
読み方は「マックス関数」です。英語の「Maximum(マキシマム=最大値)」の略が語源になっています。Excel 2016以降のすべてのバージョンとMicrosoft 365で使えます。職場のExcelならまず問題なく動きますよ。
やっていることはとてもシンプルです。「渡された数値をすべて比較して、一番大きい数値を返す」だけです。
| 入力 | 出力 |
|---|---|
| 数値やセル範囲(最大255個) | その中で一番大きい数値(1つ) |
たとえば社員10人の月間売上データがあるとします。MAX関数を使えばトップの売上額を一発で取り出せます。並べ替えも目視確認もいりません。
MAX関数がデータを扱うルール
MAX関数がセルのデータをどう処理するか知っておくと、トラブルを防げます。
| データの種類 | MAX関数の扱い |
|---|---|
| 数値 | 比較対象になる |
| 空白セル | 無視される |
| 文字列 | セル範囲内では無視される |
| 論理値(TRUE/FALSE) | セル範囲内では無視される(引数に直接書くとTRUE=1・FALSE=0として計算) |
| エラー値(#N/Aなど) | そのままエラーが返る |
数値が1つも含まれていない場合は 0 を返します。エラーではなく0になる点がポイントです。「あれ、最大値が0になった?」というときは、後述のエラー対処セクションをチェックしてみてください。
NOTE
論理値や文字列もすべて含めて計算したい場合は、[[2022-05-11-excel-function-howto-use-maxa|MAXA関数]]を使います。TRUE=1、FALSE=0、文字列=0として扱ってくれます。
MAX関数の書き方(構文と引数)
基本構文
=MAX(数値1, [数値2], ...)
引数の説明
| 引数 | 必須/任意 | 内容 |
|---|---|---|
| 数値1 | 必須 | 最大値を求めたい数値、セル参照、またはセル範囲 |
| 数値2以降 | 任意 | 追加で比較したい数値や範囲(最大255個まで指定可能) |
引数には数値を直接入力することもできます。セル参照やセル範囲を指定することも可能です。名前付き範囲(名前の定義)も使えるので、大きなデータを管理するときに便利ですよ。
MAX関数の基本的な使い方
結論から言うと、セル範囲を指定するだけで最大値が出ます。
たとえばA1からA10に10人のテストの点数が入っている場合はこう書きます。
=MAX(A1:A10)
A1からA10の中で一番大きい数値が返ってきます。たった1行の式で完了です。
数値を直接入力する書き方もできます。
=MAX(80, 95, 72, 88)
この場合は 95 が返ります。ちょっとした確認に便利ですが、実務ではセル範囲を指定するパターンがほとんどです。
列全体を指定する書き方
データが今後増える可能性がある場合は、列全体を指定できます。
=MAX(A:A)
A列のすべてのセルを対象に最大値を返します。ただし、データ量が多いシートでは計算速度が遅くなることがあります。範囲を絞れる場合は A1:A1000 のように明示するのがおすすめです。
複数の離れた範囲から最大値を求める
引数をカンマで区切ると、離れた場所のセル範囲をまとめて比較できます。
=MAX(B2:B13, D2:D13)
たとえばB列に上半期の売上、D列に下半期の売上が入っているとします。この式なら年間を通した最大売上をまとめて出せます。間にあるC列は自動的にスキップされます。必要なデータだけを対象にできるのがポイントです。
MAX関数の実務活用パターン
基本の使い方がわかったところで、実務でよく使われる応用パターンを見ていきましょう。
条件付きで最大値を求める(MAXIFS関数)
「営業部だけの最大売上を出したい」「東京支店の最高値を知りたい」など、条件を絞って最大値を求めたい場面はよく出てきますよね。
MAX関数単体では条件指定ができません。このときに使うのがMAXIFS関数です。
=MAXIFS(最大値の範囲, 条件範囲1, 条件1, [条件範囲2, 条件2], ...)
たとえばA列に部署名、B列に売上が入っている場合はこうなります。営業部の最大売上を求める式です。
=MAXIFS(B2:B100, A2:A100, "営業部")
A列が「営業部」の行だけを対象にして、B列の最大値を返してくれます。
複数条件を組み合わせることもできます。「営業部」かつ「2025年」のデータだけに絞る式はこちらです。
=MAXIFS(C2:C100, A2:A100, "営業部", B2:B100, 2025)
NOTE
MAXIFS関数はExcel 2019以降またはMicrosoft 365で使えます。それ以前のバージョンでは配列数式
=MAX(IF(条件, 範囲))をCtrl+Shift+Enterで入力する方法で代用できます。
MAXIFS関数の詳しい使い方は「[[2022-05-12-excel-function-howto-use-maxifs|MAXIFS関数の使い方]]」もあわせてどうぞ。
IF関数と組み合わせて判定に使う
MAX関数の結果をもとに条件分岐させるパターンも実務でよく出てきます。
=IF(MAX(B2:B10)>=100, "目標達成", "未達成")
B2からB10の中で最大値が100以上なら「目標達成」、そうでなければ「未達成」と表示します。売上目標の到達チェックや基準値との比較に使える書き方です。
[[2022-01-16-excel-function-howto-use-if|IF関数の使い方]]を知っておくと、こうした組み合わせがスムーズに作れます。
日付の最大値(最新日)を求める
意外と知られていませんが、MAX関数は日付データにも使えます。Excelでは日付が内部的にシリアル値(連番の数値)として管理されています。そのため、MAX関数で「一番新しい日付」を取得できます。
=MAX(A2:A50)
A列に日付が入っていれば、一番新しい日付が返ります。結果のセルの表示形式を「日付」に設定しておけば、見た目もきちんと日付として表示されますよ。
納品日の最終日を調べたいときや、最新の更新日を取得したいときに重宝します。
TIP
逆に「一番古い日付」を取り出したい場合は[[2022-03-18-excel-function-howto-use-min|MIN関数]]を使います。MIN関数で最小のシリアル値=最古の日付を取得できます。
SUM関数やAVERAGE関数と組み合わせる
MAX関数は、他の集計関数と組み合わせると分析の幅が広がります。
=MAX(B2:B10) - MIN(B2:B10)
最大値と最小値の差(レンジ)を求める式です。データのばらつき具合をざっくり把握したいときに便利です。
=MAX(B2:B10) - AVERAGE(B2:B10)
最大値と[[2022-03-24-excel-function-howto-use-average|平均値]]の差を出す式です。トップがどれだけ突出しているかが一目でわかります。
[[2022-02-06-excel-function-howto-use-sum|SUM関数]]や[[2022-03-24-excel-function-howto-use-average|AVERAGE関数]]と組み合わせた集計レポートを作ると、上司への報告資料がぐっとわかりやすくなりますよ。
N番目に大きい値を求めたい場合
「1位じゃなくて2位の売上を知りたい」という場合は、MAX関数ではなく[[2022-04-30-excel-function-howto-use-large|LARGE関数]]を使います。
=LARGE(A1:A10, 2)
第2引数に「何番目に大きい値か」を指定します。MAX関数は常に1位(最大値)専用です。2位以降が必要なときはLARGE関数の出番ですよ。
MAX関数とMIN関数の違い
MAX関数と対になるのが[[2022-03-18-excel-function-howto-use-min|MIN関数]]です。セットで覚えておくと便利なので、違いを整理しておきましょう。
| 比較項目 | MAX関数 | MIN関数 | ||
|---|---|---|---|---|
| 機能 | 最大値を返す | 最小値を返す | ||
| 構文 | =MAX(範囲) | =MIN(範囲) | ||
| 引数 | 最大255個 | 最大255個 | ||
| 空白セルの扱い | 無視する | 無視する | ||
| 文字列の扱い | 無視する | 無視する | ||
| 数値なしの場合 | 0を返す | 0を返す | ||
| 条件付き版 | [[2022-05-12-excel-function-howto-use-maxifs | MAXIFS関数]] | [[2022-05-14-excel-function-howto-use-minifs | MINIFS関数]] |
| N番目版 | [[2022-04-30-excel-function-howto-use-large | LARGE関数]] | [[2022-04-29-excel-function-howto-use-small | SMALL関数]] |
| 日付で使うと | 最新日を返す | 最古日を返す | ||
| 使用場面 | 売上トップ・最高得点 | 最低価格・最少在庫 |
構文も引数もまったく同じで、方向が逆なだけです。「最大値はわかったけど、最小値も知りたい」という場面は非常に多いので、[[2022-03-18-excel-function-howto-use-min|MIN関数の使い方]]もあわせて確認しておくことをおすすめします。
TIP
MAX関数とMIN関数を同じ範囲に使えば、データの「振れ幅」が一発でわかります。
=MAX(B2:B10)-MIN(B2:B10)で最大と最小の差(レンジ)を求められます。
よくあるエラーと対処法
MAX関数自体がエラーを出すことは少ないですが、「期待どおりの結果にならない」 ケースはよくあります。
| 症状 | 原因 | 解決策 | ||
|---|---|---|---|---|
結果が 0 になる | 数値に見える文字列が入っている | [[2022-03-31-excel-function-howto-use-isnumber | ISNUMBER関数]]で確認し、区切り位置や[[2022-07-26-excel-function-howto-use-value | VALUE関数]]で変換 |
結果が 0 になる | 範囲の指定ミス | 数式バーで範囲をクリックして色付き枠を確認 | ||
結果が 0 になる | 対象範囲がすべて空白 | データが正しく入力されているか確認 | ||
#N/A や #VALUE! が出る | 範囲内にエラーセルがある | AGGREGATE関数(後述)で回避 | ||
| 期待より小さい値が返る | 一部のデータが文字列で無視されている | 文字列を数値に変換する |
結果が「0」になるときの対処法
MAX関数で一番多いトラブルがこれです。原因はほぼ「見た目は数字だが中身が文字列」のケースです。
特にCSVファイルを取り込んだあとは、数値に見えて中身が文字列になっていることがよくあります。まず次の式でチェックしてみてください。
=ISNUMBER(A1)
TRUE なら数値、FALSE なら文字列です。文字列だった場合は、データタブの「区切り位置」機能を使います。[[2022-07-26-excel-function-howto-use-value|VALUE関数]]で数値に変換する方法もありますよ。
範囲内にエラーがあるときの対処法
対象範囲に #N/A や #VALUE! などのエラーセルが1つでも含まれていると、MAX関数もそのエラーをそのまま返してしまいます。
このときはAGGREGATE関数を使うと、エラーを無視して最大値を求められます。
=AGGREGATE(4, 6, A1:A100)
第1引数の 4 は「最大値」、第2引数の 6 は「エラー値を無視」です。ちょっと覚えにくいですが、この 4, 6 の組み合わせだけメモしておけばOKです。
[[2022-03-28-excel-function-howto-use-iferror|IFERROR関数]]で個別のエラーセルを処理する方法もあります。ただし、データが多い場合はAGGREGATE関数のほうが手軽です。
負の数しかないのに0が返るとき
範囲内が -5, -10, -3 のようにすべて負の数の場合、MAX関数は正しく -3 を返します。もし0が返る場合は、範囲内に空白セルや文字列が含まれていないか確認してみてください。文字列が混ざっていると実質的にゼロ個の数値として扱われ、0になることがあります。
似た関数との違い・使い分け
MAX関数に関連する関数をまとめて比較します。場面に応じて使い分けてみてください。
| 関数 | 機能 | 使い分けのポイント | |
|---|---|---|---|
| MAX | 最大値を返す | 通常の最大値はこれでOK | |
| **[[2022-03-18-excel-function-howto-use-min | MIN]]** | 最小値を返す | 最小値を求めたいとき |
| **[[2022-05-11-excel-function-howto-use-maxa | MAXA]]** | 論理値・文字列も含めた最大値 | TRUE=1、文字列=0として計算したいとき |
| **[[2022-05-12-excel-function-howto-use-maxifs | MAXIFS]]** | 条件付きの最大値 | 部署別・月別など条件で絞りたいとき |
| **[[2022-04-30-excel-function-howto-use-large | LARGE]]** | N番目に大きい値 | 2位・3位の値を取得したいとき |
| **[[2022-04-29-excel-function-howto-use-small | SMALL]]** | N番目に小さい値 | 下から数えたいとき |
| **[[2022-03-24-excel-function-howto-use-average | AVERAGE]]** | 平均値 | 最大値ではなく平均を知りたいとき |
| **[[2022-02-06-excel-function-howto-use-sum | SUM]]** | 合計値 | 合計を求めたいとき |
| **[[2022-03-22-excel-function-howto-use-rank | RANK]]** | 順位を返す | 全体の中で何位かを知りたいとき |
MAXA関数との使い分け
MAX関数はセル範囲内の文字列やTRUE/FALSEを無視します。一方、[[2022-05-11-excel-function-howto-use-maxa|MAXA関数]]はTRUE=1、FALSE=0、文字列=0として計算に含めます。
通常の数値データならMAX関数で十分です。TRUE/FALSEが混在するデータを扱う場合はMAXA関数を検討してみてください。
LARGE関数との使い分け
MAX関数は常に「1位」を返す関数です。2位や3位が必要な場合は[[2022-04-30-excel-function-howto-use-large|LARGE関数]]を使います。
=LARGE(A1:A10, 1)
この式はMAX関数と同じ結果になります。LARGE(範囲, 1) = MAX(範囲) と覚えておくと、両関数の関係がわかりやすくなりますよ。
まとめ
- MAX関数は指定した範囲から最大値を1つ返すシンプルな関数
- 書き方は
=MAX(範囲)で、引数は最大255個まで指定できる - 条件付きで最大値を求めたいときはMAXIFS関数を使う
- 日付データにも使える(最新日の取得に便利)
- 「0が返る」ときは[[2022-03-31-excel-function-howto-use-isnumber|ISNUMBER関数]]でデータが文字列になっていないか確認
- エラーを含む範囲には AGGREGATE関数 で対処できる
- 2位以降の値が必要な場合は[[2022-04-30-excel-function-howto-use-large|LARGE関数]]を使う
- [[2022-03-18-excel-function-howto-use-min|MIN関数]]とセットで覚えると集計の幅が広がる
MAX関数はExcelの基本関数の中でも使用頻度がとても高い関数です。まずは =MAX(A1:A10) の基本形から使ってみてください。[[2022-03-18-excel-function-howto-use-min|MIN関数]]や[[2022-04-30-excel-function-howto-use-large|LARGE関数]]もセットで覚えておくと、データ集計の幅がぐっと広がりますよ。
この記事で紹介した関数・関連記事
- [[2022-03-18-excel-function-howto-use-min|MIN関数の使い方]]
- [[2022-05-12-excel-function-howto-use-maxifs|MAXIFS関数の使い方]]
- [[2022-05-11-excel-function-howto-use-maxa|MAXA関数の使い方]]
- [[2022-04-30-excel-function-howto-use-large|LARGE関数の使い方]]
- [[2022-04-29-excel-function-howto-use-small|SMALL関数の使い方]]
- [[2022-01-16-excel-function-howto-use-if|IF関数の使い方]]
- [[2022-02-06-excel-function-howto-use-sum|SUM関数の使い方]]
- [[2022-03-24-excel-function-howto-use-average|AVERAGE関数の使い方]]
- [[2022-03-22-excel-function-howto-use-rank|RANK関数の使い方]]
- [[2022-03-31-excel-function-howto-use-isnumber|ISNUMBER関数の使い方]]
- [[2022-07-26-excel-function-howto-use-value|VALUE関数の使い方]]
- [[2022-03-28-excel-function-howto-use-iferror|IFERROR関数の使い方]]
- [[2022-02-06-excel-function|Excel関数の基本的な使い方]]
- [[2022-02-19-excel-function-list-by-function|Excel関数一覧(機能別)]]
