ExcelのMAX関数の使い方|最大値から条件付きまで

スポンサーリンク

テストの最高点、月間の最大売上、在庫数のピーク値。「この中で一番大きい数字はどれ?」と調べたい場面、仕事でよく出てきますよね。

そのたびに目視で数字を追いかけていませんか? データが数百行になると見落としも起きやすくなります。

ExcelのMAX関数を使えば、どんなに大きな表でも最大値を一瞬で取り出せます。 この記事では基本の書き方から条件付き最大値、日付対応、エラー対処法まで解説していきます。

MAX関数とは?読み方と基本の仕組み

MAX関数は、指定した範囲の中から最大の数値を1つ返す関数です。

読み方は「マックス関数」です。英語の「Maximum(マキシマム=最大値)」の略が語源になっています。Excelの全バージョンとMicrosoft 365で使えます。職場のExcelならまず問題なく動きますよ。

やっていることはとてもシンプルです。渡された数値をすべて比較して、一番大きい数値を返すだけです。

入力出力
数値やセル範囲(最大255個)その中で一番大きい数値(1つ)

この記事ではサンプルデータとして、次の売上表を使って解説していきます。

 ABC
1社員名部署4月売上
2佐藤営業部580,000
3鈴木営業部430,000
4高橋総務部310,000
5田中営業部720,000
6伊藤総務部290,000
7渡辺営業部650,000

MAX関数がデータを扱うルール

MAX関数がセルのデータをどう処理するか知っておくと、トラブルを防げます。

データの種類MAX関数の扱い
数値比較対象になる
空白セル無視される
文字列セル範囲内では無視される
論理値(TRUE/FALSE)セル範囲内では無視される
エラー値(#N/Aなど)そのままエラーが返る

ポイントは、引数に直接書いた場合の扱いが異なることです。=MAX(TRUE, 0) のように直接入力すると、TRUE=1・FALSE=0として計算されます。セル範囲内のTRUE/FALSEは無視されるので注意してください。

数値が1つも含まれていない場合は 0 を返します。エラーではなく0になる点が要注意です。「あれ、最大値が0?」というときは、後半のエラー対処セクションをチェックしてみてください。

NOTE

論理値や文字列もすべて含めて計算したい場合は、MAXA関数を使います。TRUE=1、FALSE=0、文字列=0として扱ってくれますよ。

MAX関数の書き方と基本的な使い方

基本構文と引数

=MAX(数値1, [数値2], ...)
引数必須/任意内容
数値1必須最大値を求めたい数値、セル参照、またはセル範囲
数値2〜255任意追加で比較したい数値や範囲(最大255個まで)

引数には数値の直接入力、セル参照、セル範囲を指定できます。名前付き範囲(名前の定義)も使えるので、大きなデータを管理するときに便利ですよ。

セル範囲で最大値を求める

サンプル表の4月売上(C2:C7)の最大値を求めてみましょう。

=MAX(C2:C7)

結果は 720,000 です。6件の売上は290,000・310,000・430,000・580,000・650,000・720,000。最大の720,000(田中)が正しく取れていますね。

数値を直接入力する書き方もできます。

=MAX(80, 95, 72, 88)

この場合は 95 が返ります。ちょっとした確認に便利ですが、実務ではセル範囲を指定するパターンがほとんどです。

データが今後増える可能性がある場合は、列全体を指定できます。

=MAX(C:C)

C列のすべてのセルが対象になります。ただしデータ量が多いシートでは計算が遅くなります。範囲を絞れる場合は C2:C1000 のように明示するのがおすすめです。

複数の離れた範囲から最大値を求める

引数をカンマで区切ると、離れたセル範囲をまとめて比較できます。

=MAX(B2:B13, D2:D13)

たとえばB列に上半期、D列に下半期の売上が入っているとします。この式なら年間を通した最大売上を一発で出せます。間の列は自動的にスキップされるので、必要なデータだけを対象にできますよ。

条件付きで最大値を求める方法

「営業部だけの最大売上を出したい」「特定の月だけの最高値を知りたい」など、条件を絞って最大値を求めたい場面はよく出てきますよね。

MAX関数単体では条件指定ができません。条件付き最大値を求める方法は、Excelのバージョンによって使い分けが必要です。

MAXIFS関数で条件付き最大値を求める

MAXIFS関数(条件付きで最大値を返す関数)を使うのが一番シンプルな方法です。

=MAXIFS(最大値の範囲, 条件範囲1, 条件1, [条件範囲2, 条件2], ...)

サンプル表で営業部の最大売上を求めるにはこう書きます。

=MAXIFS(C2:C7, B2:B7, "営業部")

B列が「営業部」の行だけを対象にして、C列の最大値を返します。営業部の売上は580,000・430,000・720,000・650,000の4件。結果は 720,000(田中)になります。

総務部の最大売上も同じ要領です。

=MAXIFS(C2:C7, B2:B7, "総務部")

総務部は310,000と290,000の2件なので、結果は 310,000(高橋)です。

複数条件を組み合わせることもできます。「営業部」かつ「売上50万以上」のデータに絞る場合はこちらです。

=MAXIFS(C2:C7, B2:B7, "営業部", C2:C7, ">="&500000)

営業部で50万以上は580,000・720,000・650,000の3件。結果は 720,000 です。

WARNING

MAXIFS関数はExcel 2019以降またはMicrosoft 365で使えます。Excel 2016では使えません。Excel 2016以前では次のMAX(IF)配列数式を使ってください。

MAXIFS関数の詳しい使い方は「MAXIFS関数の使い方」もあわせてどうぞ。

MAX(IF)配列数式で条件付き最大値を求める(Excel 2016以前)

MAXIFS関数が使えないバージョンでは、MAX関数とIF関数を組み合わせた配列数式で代用できます。

サンプル表で営業部の最大売上を求める式です。

=MAX(IF(B2:B7="営業部", C2:C7))

入力時はCtrl+Shift+Enterを押してください。 Enterだけで確定すると正しい結果になりません。正しく入力できると、数式バーに {=MAX(IF(B2:B7="営業部", C2:C7))} と波括弧が自動で付きます。

この波括弧は手入力では効きません。必ずCtrl+Shift+Enterで確定してくださいね。

TIP

Excel 365(Microsoft 365)では動的配列に対応しているため、通常のEnterキーだけで配列数式が動作します。Ctrl+Shift+Enterは不要です。

バージョン別の使い分け

条件付き最大値を求める方法をまとめました。使っているExcelのバージョンに合わせて選んでください。

方法対応バージョン入力方法特徴
MAX関数(条件なし)全バージョンEnter条件指定は不可
MAX(IF)配列数式全バージョンCtrl+Shift+Enter古いExcelでも使える
MAXIFS関数Excel 2019以降 / 365Enter最もシンプル
AGGREGATE関数Excel 2010以降Enterエラーを含む範囲向き

Excel 2019以降ならMAXIFS関数が一番おすすめです。それ以前のバージョンではMAX(IF)配列数式を使ってみてください。

実務で使えるMAX関数の活用パターン

基本と条件付きがわかったところで、実務でよく使われる応用パターンを見ていきましょう。

日付データに使って最新日を取得する

意外と知られていませんが、MAX関数は日付データにも使えます。Excelでは日付がシリアル値(連番の数値)で内部管理されています。そのためMAX関数で「一番新しい日付」を取得できます。

たとえばA列に納品日が入っている場合はこう書きます。

=MAX(A2:A50)

一番新しい日付が返ります。結果セルの表示形式を「日付」にしておけば、見た目もきちんと日付で表示されますよ。

特定の条件に合う最新日を取りたい場合もあります。たとえば「営業部の最終受注日」を求めるなら、MAXIFS関数が便利です。

=MAXIFS(D2:D100, B2:B100, "営業部")

D列に受注日、B列に部署名が入っている場合の式です。結果セルの表示形式を「日付」に設定するのを忘れないでくださいね。

TIP

逆に「一番古い日付」を取り出したい場合はMIN関数を使います。最小のシリアル値=最古の日付を取得できますよ。

条件付き書式でMAX関数を使う

表の中で最大値のセルを自動的に目立たせたい場合は、条件付き書式とMAX関数を組み合わせます。

設定手順は次の3ステップです。

  1. 対象範囲(C2:C7)を選択
  2. 「ホーム」タブ →「条件付き書式」→「新しいルール」
  3. 「数式を使用して…」を選び、数式欄に =C2=MAX($C$2:$C$7) と入力

MAX関数の範囲を絶対参照($C$2:$C$7)にするのがポイントです。これで最大値のセルだけが自動でハイライトされます。売上一覧や成績表でトップを目立たせたいときに使ってみてください。

N番目に大きい値はLARGE関数で

「1位じゃなくて2位の売上を知りたい」という場合は、MAX関数ではなくLARGE関数を使います。

=LARGE(C2:C7, 2)

サンプル表なら2番目に大きい 650,000(渡辺)が返ります。

ちなみに =LARGE(C2:C7, 1) はMAX関数と同じ結果です。MAX関数は常に1位専用なので、2位以降が必要なときはLARGE関数の出番ですよ。

MAX関数のよくあるエラーと対処法

MAX関数自体がエラーを出すことは少ないですが、「期待どおりの結果にならない」 ケースはよくあります。

症状原因解決策
結果が 0 になる数値に見える文字列が入っているISNUMBER関数で確認→変換
結果が 0 になる範囲の指定ミス数式バーで範囲を確認
結果が 0 になる対象範囲がすべて空白データ入力を確認
#N/A#VALUE! が出る範囲内にエラーセルがあるAGGREGATE関数で回避
期待より小さい値が返る一部が文字列で無視されている文字列を数値に変換

結果が「0」になるときの対処法

MAX関数で一番多いトラブルがこれです。原因はほぼ「見た目は数字だが中身が文字列」というケースです。

特にCSVファイルを取り込んだあとに起きやすい現象です。次のようなケースで数値が文字列化します。

  • セルの書式が「文字列」に設定されている
  • 先頭にゼロが付いている(例: 007)
  • 数値の前後に空白文字が含まれている

まずISNUMBER関数で確認してみましょう。

=ISNUMBER(A1)

TRUE なら数値、FALSE なら文字列です。ISNUMBER関数でチェックする習慣をつけておくと、トラブルの切り分けが早くなります。

文字列だった場合の対処法は3つあります。

  1. データタブの「区切り位置」 — 範囲を選択→「区切り位置」→そのまま「完了」で一括変換
  2. VALUE関数=VALUE(A1) で1セルずつ数値に変換
  3. エラーチェックオプション — セル左上の緑三角をクリック→「数値に変換」

大量のデータを変換するなら「区切り位置」が一番手軽です。

範囲内にエラーがあるときの対処法

対象範囲に #N/A#VALUE! が1つでも含まれていると、MAX関数もそのエラーを返してしまいます。

このときはAGGREGATE関数を使います。エラーを無視して最大値を求められます。

=AGGREGATE(4, 6, C2:C7)

第1引数の 4 は「最大値」、第2引数の 6 は「エラー値を無視」という意味です。ちょっと覚えにくいですが、4, 6 の組み合わせだけメモしておけば大丈夫です。

AGGREGATE関数はExcel 2010以降で使えます。

IFERROR関数で個別のエラーセルを処理する方法もあります。ただしデータが多い場合はAGGREGATE関数のほうが手軽ですよ。

まとめ

MAX関数は指定した範囲から最大値を1つ返すシンプルな関数です。ここまでの内容を整理しておきましょう。

  • 書き方は =MAX(範囲) で、引数は最大255個まで指定できる
  • 条件付き最大値はMAXIFS関数(Excel 2019以降)が最もシンプル
  • Excel 2016以前ではMAX(IF)配列数式をCtrl+Shift+Enterで入力
  • 日付データにも使える(最新日の取得に便利)
  • 「0が返る」ときはISNUMBER関数でデータが文字列になっていないか確認
  • エラーを含む範囲にはAGGREGATE関数で対処
  • 2位以降の値が必要ならLARGE関数を使う
  • 最小値を求めたいときはMIN関数とセットで覚えると便利

まずは =MAX(C2:C7) の基本形から使ってみてください。条件付き最大値やエラー対処も覚えると、データ集計の幅がぐっと広がりますよ。


この記事で紹介した関数・関連記事

タイトルとURLをコピーしました