データの最大値を出したいけど、範囲に「欠席」や「対象外」といった文字列が混ざっていることってありますよね。
MAX関数なら文字列はスキップしてくれます。でも「文字列が入っているセルも考慮して最大値を出したい」場面もあります。
そんなときに使うのがMAXA関数です。文字列やFALSEを0、TRUEを1として計算に含めてくれます。
この記事ではMAXA関数の基本から、MAX関数との違い、実務での使いどころまで紹介します。
MAXA関数とは?
MAXA関数(読み方: マックスエー関数)は、文字列やTRUE/FALSEを含むデータ全体から最大値を返す関数です。
名前は「MAX」に「A(All)」を加えたもので、「すべてのデータを計算対象にする」というイメージです。
MAX関数との最大の違いは、データ型ごとの扱い方です。
| セルの内容 | MAX | MAXA |
|---|---|---|
| 数値 | 計算に含む | 計算に含む |
| 文字列 | スキップ | 0として計算 |
| TRUE | スキップ | 1として計算 |
| FALSE | スキップ | 0として計算 |
| 空白セル | スキップ | スキップ |
たとえばA1:A3に「80, “欠席”, 60」と入っているとします。
=MAX(A1:A3)→ 80(数値2つから最大値)=MAXA(A1:A3)→ 80(文字列を0として含めても最大値は変わらない)
この例では結果が同じですね。MAXA関数が活きるのは、負の数値を含むケースです。A1:A3に「-10, “欠席”, -20」が入っているとします。
=MAX(A1:A3)→ -10(数値2つから最大値)=MAXA(A1:A3)→ 0(文字列の0が最大値になる)
MAXA関数にできることをまとめると、次のとおりです。
- 文字列を0として最大値の比較に含める
- TRUEを1、FALSEを0として比較に含める
- 空白セルはスキップする(MAX関数と同じ)
- 数値だけの範囲ではMAX関数と同じ結果になる
NOTE
MAXA関数はGoogleスプレッドシートの全バージョンで使えます。Excelにも同名の関数があり、動作もほぼ同じです。
MAXA関数の書き方(構文と引数)
基本構文
=MAXA(値1, [値2], ...)
カッコの中に、最大値を求めたいデータやセル範囲を指定します。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 値1 | 必須 | 最大値を求めたい最初の値、セル参照、またはセル範囲 |
| 値2, … | 任意 | 追加で比較したい値やセル範囲(最大30個まで) |
引数が2つ以上ある場合は、カンマ( , )で区切ります。
MAX関数と構文は同じです。違いは「文字列やTRUE/FALSEをどう扱うか」だけです。
TIP
Excelでは引数を最大255個まで指定できますが、Googleスプレッドシートでは最大30個です。セル範囲を使えば実務で困ることはありません。
MAXA関数の基本的な使い方
ここからは、実際にMAXA関数を使う手順を見ていきましょう。
文字列を含むデータの最大値を求める
B2からB6にテストの点数が入っていて、B4に「欠席」という文字列が入っているとします。
=MAXA(B2:B6)
「80, 70, 欠席, 90, 60」の場合、「欠席」は0として扱われます。結果は「90」です。数値の最大値がそのまま返ります。
MAX関数でも「90」になります。この場合は文字列が0として扱われても、最大値には影響しません。
TRUE/FALSEを含むデータの最大値
チェックボックスの列など、TRUE/FALSEが混在するデータにも使えます。
B2からB5に「0.5, TRUE, FALSE, 0.8」が入っているとします。
=MAXA(B2:B5)
TRUEは1、FALSEは0として扱われます。結果は「1」です。TRUEが1に変換されて最大値になります。
MAX関数なら「0.8」になります。TRUEをスキップするからです。
負の数値と文字列が混在する場合
MAXA関数とMAX関数の違いが明確に出るのは、負の数値を含むケースです。
B2からB4に「-5, “計測不能”, -10」が入っているとします。
=MAXA(B2:B4)
文字列が0として扱われるため、結果は「0」です。MAX関数なら「-5」になります。
数値だけの範囲で使った場合
数値だけの範囲ならMAXA関数はMAX関数と同じ結果を返します。
=MAXA(80, 70, 90)
結果は「90」です。文字列やTRUE/FALSEが含まれていなければ、違いはありません。
MAXA関数の実務活用パターン
パターン1: 計測エラーを含むデータの最大値
センサーデータや計測結果で「エラー」や「計測不能」という文字列が入る場面です。B列に計測値が入っているとします。
=MAXA(B2:B100)
文字列セルを0として扱うので、異常値の文字列が含まれていても最大値を求められます。
ただし、計測エラーを無視して数値だけの最大値を出したい場合は、MAX関数のほうが適しています。
パターン2: MAX関数との結果を並べて比較する
同じ範囲に対してMAXとMAXAの両方を出しておくと、データの中身が見えてきます。
=MAX(B2:B20)
=MAXA(B2:B20)
2つの値に差がある場合、いくつかの可能性があります。
- 負の数値があり、文字列の0がMAXAの最大値になっている
- TRUEの1が最大値に影響している
差がなければ、範囲内は数値だけで構成されています。
パターン3: COUNTA関数と組み合わせてデータ件数を確認する
MAXA関数がどのようなデータを対象にしているか確認したいときは、COUNTA関数を使います。
=COUNTA(B2:B20)
COUNTA関数は空白以外のセル数を返します。MAX関数の結果と比べて、文字列や論理値がどの程度含まれているか把握できます。
よくあるエラーと対処法
MAXA関数はシンプルな関数ですが、結果がおかしいと感じる場面もあります。
| 症状 | 原因 | 対処法 |
|---|---|---|
| 結果が0になる | すべて空白、または負の数と文字列が混在 | データが入っているか確認。文字列が0になる仕様を確認する |
| MAX関数と結果が違う | 文字列やTRUE/FALSEが0/1として含まれている | 意図どおりか確認。不要ならMAX関数に切り替える |
| MAX関数と結果が同じ | 範囲内に文字列やTRUE/FALSEがない | 数値だけの範囲では同じ結果になる |
| #N/Aエラー | 引数にエラー値が含まれている | IFERROR関数でエラーを除外する |
結果が0になるときの確認方法
MAXA関数の結果が0になる場合、2つの原因が考えられます。
1つ目は、範囲内がすべて空白セルのケースです。2つ目は、すべての数値が負の値で、文字列が0として最大値になっているケースです。
MAX関数と結果を比べてみてください。
=MAX(B2:B20) → 文字列をスキップした最大値
=MAXA(B2:B20) → 文字列を0として含めた最大値
MAX関数が負の値を返し、MAXA関数が0を返すなら、文字列が影響しています。文字列を0として含める意図がなければ、MAX関数に切り替えましょう。
#N/Aエラーの対処
範囲内にエラー値(#N/A, #VALUE!など)がある場合、MAXA関数もエラーを返します。
=IFERROR(MAXA(B2:B20), "エラーあり")
エラーセルを除外して最大値を求めたい場合は、FILTER関数と組み合わせます。
=MAXA(FILTER(B2:B20, NOT(ISERROR(B2:B20))))
MAX関数との違い・使い分け
MAXA関数とMAX関数は構文が同じで、データ型の扱いだけが異なります。
| 比較項目 | MAX | MAXA |
|---|---|---|
| 数値 | 計算に含む | 計算に含む |
| 文字列 | スキップ | 0として計算 |
| TRUE | スキップ | 1として計算 |
| FALSE | スキップ | 0として計算 |
| 空白セル | スキップ | スキップ |
| 主な用途 | 数値だけの最大値 | 全データ型を考慮した最大値 |
どちらを使うべき?
使い分けの判断基準はシンプルです。
- 数値だけの最大値を出したい → MAX関数
- 文字列やTRUE/FALSEも考慮して最大値を出したい → MAXA関数
実務ではほとんどの場面でMAX関数が適しています。MAXA関数が必要になるのは、負の数値と文字列が混在するデータで「文字列セルを0として含めたい」場面です。正の数値だけのデータなら、文字列を0として含めても最大値は変わりません。
似た関数との違い・使い分け
MAXA関数と関連する関数をまとめました。
| 関数 | 動作 | 文字列の扱い | 使いどころ |
|---|---|---|---|
| MAXA | 全データ型を含む最大値 | 0として計算 | 文字列も考慮して最大値を求めたい |
| MAX | 数値の最大値 | スキップ | 数値だけの最大値 |
| MAXIFS | 条件付き最大値 | スキップ | 条件に合うデータの最大値 |
| AVERAGEA | 全データ型を含む平均 | 0として計算 | 文字列も含めた平均 |
| MINA | 全データ型を含む最小値 | 0として計算 | 文字列も考慮して最小値を求めたい |
条件付きで最大値を出したい場合は、MAXIFS関数を使いましょう。
Excelとの違い
MAXA関数はExcelとGoogleスプレッドシートでほぼ同じ動作です。
| 項目 | Excel | Googleスプレッドシート |
|---|---|---|
| 構文 | =MAXA(値1, …) | =MAXA(値1, …) |
| 文字列の扱い | 0として計算 | 0として計算 |
| TRUEの扱い | 1として計算 | 1として計算 |
| FALSEの扱い | 0として計算 | 0として計算 |
| 空白セル | スキップ | スキップ |
| 引数上限 | 最大255個 | 最大30個 |
引数の上限数が異なりますが、セル範囲を使えば問題ありません。Excelと同じ感覚で使えますよ。
まとめ
MAXA関数は、文字列やTRUE/FALSEを含むデータから最大値を求める関数です。
ポイントを整理します。
- 構文は
=MAXA(値1, [値2], ...)で全データ型を含む最大値を返す - 文字列は0、TRUEは1、FALSEは0として計算に含める
- 空白セルはスキップされる(MAX関数と同じ)
- 数値だけの範囲ではMAX関数と同じ結果になる
- 負の数値と文字列が混在するデータで違いが出る
- 通常の最大値はMAX関数がおすすめ
まずは =MAXA(範囲) と =MAX(範囲) を並べて、結果の違いを確認してみてください。
