MAXA関数ではなく、MAX関数を使うべき

はじめに
先日『【MAX関数】使い方と解説 – 最大値 –』にて、MAX関数を取り上げました。
本記事では、MAX関数の姉妹関数であるMAXA関数を取り上げ、その違い、注意点をお伝えします。
MAX関数
MAX関数は、数値の中で最大値を求める関数です。
文字列、論理値、空白のセルは計算対象外となります(見かけ上は0が返る)。
基本的な使い方は以下の通りです。
=MAX(数値1, 数値2,・・・)
例えば、A1からA10までのセル範囲の最大値を求める場合は、以下のように入力します。
=MAX(A1:A10)
「数値」「論理値」「空白セル」「文字列」が引数のMAX関数の戻り値
A列 | B列 | C列 | ||
---|---|---|---|---|
MAX関数 | ||||
行1 | 数値 | 5 | 5 | =MAX(B1) |
行2 | 論理値 | TRUE | 0 | =MAX(B2) |
行3 | FALSE | 0 | =MAX(B3) | |
行4 | 空白セル | 0 | =MAX(B4) | |
行5 | 文字列 | Apple | 0 | =MAX(B5) |
行6 | エラー値 | #VALUE! | #VALUE! | =MAX(B6) |
C列には、各行のA列とB列を引数としたMAX関数が入力されています。
「論理値」「空白セル」「文字列」を引数とした、C列の関数結果は、いずれも -1 が返ってきています。
行6のエラー値はエラーが返ってきています。
MAX関数の場合は、0が返ってきますが、計算対象ではありません。
次の表を確認ください。
「数値」「論理値」「空白セル」「文字列」を混在した引数のMAX関数の計算結果
A列 | B列 | C列 | ||
---|---|---|---|---|
行1 | -1 | -2 | -1 | =MAX(B1:C1) |
行2 | -1 | TRUE | -1 | =MAX(B2:C2) |
行3 | -1 | Apple | -1 | =MAX(B3:C3) |
行4 | -1 | -1 | =MAX(B4:C4) | |
行5 | -1 | #DIV/0! | #DIV/0! | =MAX(B5:C5) |
先程の「論理値」「文字列」「空白セル」は0が返ってくることは確認しました。
各行のA列とB列を範囲指定したMAX関数がC列に入力されています。
A列「数値」、B列「論理値」or「文字列」or「空白セル」を比較すると、
MAX関数の結果は、いずれも 最大値 -1 です。
「論理値」「文字列」「空白セル」は0が返ってくるため、MAX関数では計算対象外であることが分かります。
なぜならば、「論理値」「文字列」「空白セル」がMAX関数の計算対象であれば、A列の -1 の方が小さくなるため、C列は0が表示されるはずだからです。
つまり、MAX関数の戻り値は、計算対象外となり、見かけ上0になっていることが分かります。
しかし、
MAXA関数は、「論理値」「文字列」「空白セル」の戻り値を計算対象になる性質を持っています。
つまり、C列の結果が、MAXA関数の場合、0になります。
具体的に、MAXA関数を次の表で見てみましょう。
MAXA関数
MAXA関数は、ほぼ全てデータの中で最大値を求める関数です。
まさに、名前の由来が「MAX All」たるゆえんです。
ほぼ全ての記載したのは、エラー値が対象外のためです
(エラー値を引数に取ると、エラーが返ってきます)
基本的な使い方は、MAX関数と同様で、以下の通りです。
=MAXA(数値1, 数値2,・・・)
例えば、A1からA10までのセル範囲の最大値を求める場合は、以下のように入力します。
=MAXA(A1:A10)
MAX関数と同様になりますので、詳しくは次の記事を参照ください。
「数値」「論理値」「空白セル」「文字列」が引数のMAXA関数の戻り値
A列 | B列 | C列 | ||
---|---|---|---|---|
MAXA関数 | ||||
行1 | 数値 | 5 | 5 | =MAXA(B1) |
行2 | 論理値 | TRUE | 1 | =MAXA(B2) |
行3 | FALSE | 0 | =MAXA(B3) | |
行4 | 空白セル | 0 | =MAXA(B4) | |
行5 | 文字列 | Apple | 0 | =MAXA(B5) |
行6 | エラー値 | #VALUE! | #VALUE! | =MAXA(B6) |
MAX関数と同様に、C列のMAXA関数の戻り値を確認してみましょう。
整理すると、次のようになります。
引数 | 戻り値 |
---|---|
TURE | 1 |
FALSE | 0 |
空白セル | 0 |
文字列 | 0 |
エラー値 | #VALUE! |
論理値TRUEは1、それ以外は0という戻り値になっています。
これがどんな問題を引き起こすのかを見ていきましょう。
「数値」「論理値」「空白セル」「文字列」を混在した引数のMAXA関数の計算結果
A列 | B列 | C列 | ||
---|---|---|---|---|
行1 | -1 | 0 | 0 | =MAXA(B1:C1) |
行2 | -1 | TRUE | 1 | =MAXA(B2:C2) |
行3 | -1 | Apple | 0 | =MAXA(B3:C3) |
行4 | -1 | 0 | =MAXA(B4:C4) | |
行5 | -1 | #DIV/0! | #DIV/0! | =MAXA(B5:C5) |
見方はMAX関数と同様です。
行3「文字列」/行4「空白セル」の場合は、いずれも最大値は0、
(行3「文字列」/行4「空白セル」は数値0に変換されるため、A列の – 1よりによりも大きくなってしまうため)
行2「論理値TRUE」は最大値は1
(行2「論理値TRUE」は数値1に変換されるため、A列の – 1よりによりも大きくなってしまうため)
という結果がC列に返ってきています。
MAX関数の0は見かけ上0ではなく、MAXA関数は見かけ上ではなく、計算対象になっている点が分かります。
したがって、
MAXA関数は、 ‘論理値’、 ‘文字列’、および ‘空白のセル’の戻り値を計算の一部として考慮する性質があります。
MAX関数とMAXA関数の性質の違いの整理
MAX関数とMAXA関数の性質の違いを整理します。
次の関係が成り立ちます。
(2016以降のバージョンのExcelが前提条件)
- MAX関数
- 計算対象の引数は数値のみ。 数値以外は見かけ上0なだけで、計算対象外
- エラー値の引数は計算対象外
- MAXA関数
- 計算対象の引数はほぼ全て(エラー値の引数は除く)
- 各引数は以下の数値に変換される:
文字列区分 | 文字列の例 | MAXA関数による数値変換 | 備考 |
---|---|---|---|
数値 | 5 | 5 | 数値そのまま使う |
論理値 | TRUE | 1 | 1に変換 |
FALSE | 0 | 0に変換 | |
空白セル | 0 | 0に変換 | |
文字列 | Apple | 0 | 0に変換 |
エラー値 | #VALUE! | #VALUE! | エラーとして返す |
MAX関数を使うべき理由
MAXA関数は危険であり、その理由は次の通りにあります。
MAXA関数では、「論理値」「文字列」「空白セル」が数値変換され、計算されます。
例えば、論理値TRUEは1に変換されます。
これは避けるべきケースです。
したがって、私はMAXA関数の使用をお勧めしません。

それでも、MAXA関数を使うときの注意点
万が一、「論理値」「文字列」「空白セル」も数値変換して比較したいというケースもあるかもしれません
(通常の数値と論理値を比較するのは推奨できません)
それでも、論理値TRUE=1、論理値FALSE=0のように、どの数値に変換するかは、データ設計によって変わります。
しかし、
その場合は、「数値変換した列をもう1列追加し、データ定義書の作成を推奨します。
例えば、次のような定義書を作成し、実際のローデータに追加する形を取ります。
その際、論理値TRUE=1、論理値FALSE=0でいいかは、別途、社内外の協議をする必要があります。
もしかしたら、TUREになるケースが稀であることから、論理値TRUEは5の方が良いかもしれません。
文字列の区分 | 文字列の例 | 数値変換 | 変換の理由 |
---|---|---|---|
数値 | 5 | 5 | 数値そのまま使う |
論理値 | TRUE | 1 | 1に変換 |
FALSE | 0 | 0に変換 | |
空白セル | 0 | 0に変換 | |
文字列 | Apple | 0 | 0に変換 |
エラー値 | #VALUE! | #VALUE! | エラーとして返す |
まとめ
Excelの関数であるMAXA関数とMAX関数の違いについて解説しています。
MAX関数は、数値の中で最大値を求める関数であり、文字列、論理値、空白のセルは計算対象外となります。
一方、MAXA関数は、数値、文字列、論理値、空白のセルを計算対象として扱います。
そのため、MAXA関数を使うと文字列が計算に含まれてしまい、計算結果に誤りが生じる可能性があります。
データ分析ドットコムでは、MAXA関数の使用は避け、MAX関数を使用することを推奨します。
即利用できるダウンロードファイル
以下のリンクから、本記事で示したExcel MAX関数とMAXA関数をExcelファイルをダウンロードすることができます。
参考記事
関連記事
Excel関数の原理原則
本記事の読みやすさをさらに向上させるために、Excel関数に関する原理原則についてまとめた記事を紹介します。