エクセルでAVERAGE関数を使って平均を求めたとき、「なぜか数値がおかしい」「思っていた結果と違う」と感じたことはないでしょうか。
AVERAGE関数はシンプルに見えて、実は落とし穴がいくつも潜んでいます。
空白セルの扱い、文字列として保存された数値、0を含むデータの影響など、原因はさまざまです。
この記事では、AVERAGE関数で平均がおかしくなる主な原因を丁寧に解説しながら、正しい使い方・応用テクニックまでを網羅的に紹介します。
初めてAVERAGE関数を使う方から、関数の挙動に疑問を持っている中級者の方まで、幅広く役立てていただける内容です。
この記事のポイント
・AVERAGE関数が「おかしい」と感じる主な原因は「0の混入」「文字列数値」「空白セル」の扱いにある
・正しい結果を出すには、AVERAGEIF・AVERAGEIFS・IFERROR との組み合わせが有効
・数式の基本構文と引数の意味を正確に理解することが、トラブル回避の第一歩
AVERAGE関数で平均がおかしくなる主な原因と対処法
AVERAGE関数で期待通りの結果が出ない場合、その原因のほとんどはデータの状態にあります。
関数自体のバグではなく、エクセルが数値をどのように認識しているかを理解することが、正確な平均を求めるための出発点です。
まずは、実際によく使うサンプルデータを確認しながら解説します。
| A列:商品名 | B列:1月売上数 | C列:2月売上数 | D列:3月売上数 |
|---|---|---|---|
| 桜餅 | 120 | 95 | 110 |
| 柏餅 | 80 | 0 | 75 |
| マシュマロ | 200 | 185 | (未入力) |
| チョコ | 150 | 140 | 160 |
| アボカド | 60 | 55 | 70 |
1行目がヘッダー、2行目以降にデータが入力されているこのサンプルを使って、以降の解説を進めていきます。
0(ゼロ)が含まれていると平均が下がる問題
AVERAGE関数は、指定した範囲のすべての数値を合計し、数値が入ったセルの個数で割るという計算を行います。
このとき、0(ゼロ)は「数値が入っているセル」としてカウントされます。
たとえば、B2からB6の平均を求める場合、柏餅の「0」も計算対象になるため、平均値が実態より低くなります。
=AVERAGE(B2:B6)
結果:(120+80+200+150+60)÷5 = 122
もし0を除いて平均を出したい場合は、後述のAVERAGEIF関数を使うのが正解です。
0が「売上なし(データなし)」を意味するのか、「本当にゼロ件」を意味するのかによって、計算の方針が変わります。
データの意味を正確に把握したうえで、どちらの処理が適切かを判断しましょう。
文字列として保存された数値が無視される問題
セルの左上に小さな緑色の三角マークが表示されているとき、そのセルの数値は文字列として保存されている可能性があります。
AVERAGE関数は文字列を数値として認識しないため、該当セルを無視して計算を行います。
結果として、計算対象のセル数が減り、平均値がずれてしまいます。
この状態は、CSVファイルや他システムからコピーしたデータにとくに多く見られます。
対処法としては、該当セルを選択して「数値に変換」をクリックするか、VALUE関数を使って数値に変換してから計算するのが確実です。
=AVERAGE(VALUE(B2),VALUE(B3),VALUE(B4),VALUE(B5),VALUE(B6))
※文字列化した数値をVALUEで変換してからAVERAGEに渡す方法
空白セルと0の違いを理解する
AVERAGE関数において、空白セルと0はまったく異なる扱いをされます。
空白セルは計算対象から除外されますが、0が入力されたセルは数値として計算対象に含まれます。
サンプルデータのマシュマロのD列が空白の場合、AVERAGE(D2:D6)は空白を無視して4件で割ります。
一方、マシュマロのD列に0が入力されている場合は5件で割るため、平均値が変わります。
データ入力の段階で、「未入力」と「ゼロ件」を明確に区別して管理することが、正確な集計への近道です。
【操作のポイント】
・0を含むかどうかで平均値は大きく変わる。データの意味に合わせてAVERAGEIFや空白処理を使い分けましょう
・文字列数値はセル左上の緑三角で判断し、「数値に変換」か VALUE関数で対処するのが基本
AVERAGE関数の基本構文と引数の正しい意味
トラブルを防ぐためには、AVERAGE関数の構文を正確に理解しておくことが大切です。
シンプルな関数ですが、引数の渡し方によって結果が変わることがあります。
基本的な構文と引数
AVERAGE関数の構文は以下の通りです。
=AVERAGE(数値1, [数値2], …)
数値1:必須。平均を求めたいセル範囲や数値
数値2以降:省略可能。最大255個まで指定可能
引数にはセル範囲(例:B2:B6)、個別のセル参照(例:B2,B3)、直接数値(例:100,200)のいずれも指定できます。
もっとも一般的な使い方は、連続したセル範囲を一つの引数として渡す方法です。
複数の離れた範囲を指定したい場合は、カンマで区切って複数の引数として渡すことも可能です。
計算の仕組みを正しく把握する
AVERAGE関数の内部では、対象範囲の合計値をSUM関数で求め、COUNT関数で数値セルの個数を数え、その商を返しています。
つまり、AVERAGE(B2:B6) は SUM(B2:B6)÷COUNT(B2:B6) と同じ意味です。
この仕組みを知っておくと、なぜ文字列や空白が除外されるのかが自然に理解できます。
COUNTは数値のみを数えるため、文字列セルはカウントされず、その分母が小さくなるというわけです。
AVERAGE(B2:B6) の内部処理イメージ
= SUM(B2:B6) ÷ COUNT(B2:B6)
= 610 ÷ 5 = 122
引数に直接数値を入力した場合の注意点
引数に直接数値を入力する方法(例:=AVERAGE(120,80,200))は、データが変わるたびに数式を書き直す必要があるため、実務ではほとんど使いません。
セル範囲で指定する方法が、データの追加・変更に強い使い方です。
また、引数にTRUEやFALSEなどの論理値を直接入力した場合、TRUE=1、FALSE=0として計算されることも覚えておきましょう。
ただし、セルに入力されたTRUE/FALSEは文字列扱いになるため計算に含まれません。
【操作のポイント】
・AVERAGE関数の本質は「SUM÷COUNT」。COUNTが何を数えるかを理解すれば、挙動の謎が解けます
・引数はセル範囲指定を基本とし、直接数値入力は避けるのが実務の鉄則です
条件付き平均を求めるAVERAGEIF関数の使い方
特定の条件を満たすデータだけで平均を計算したい場面は、実務でよく出てきます。
そのような場合に活躍するのが、AVERAGEIF関数です。
0を除いた平均や、特定の商品だけの平均など、柔軟な集計が可能になります。
AVERAGEIF関数の構文と引数の説明
AVERAGEIF関数の構文は以下の通りです。
=AVERAGEIF(範囲, 条件, [平均範囲])
範囲:条件を判定するセル範囲
条件:平均に含めるデータを絞り込む条件(数値・文字列・比較演算子など)
平均範囲:省略可能。実際に平均を計算するセル範囲(省略した場合は「範囲」で計算)
「条件」に比較演算子を使う場合は、ダブルクォーテーションで囲む必要があります。
たとえば、0より大きい数値だけを対象にする場合は “>0″ と記述します。
特定の文字列に一致する行だけを対象にする場合は、”桜餅” のように文字列をそのまま記述します。
0を除外して平均を求める数式
先ほどのサンプルで、1月売上数(B列)から0を除いた平均を求めるには次の数式を使います。
=AVERAGEIF(B2:B6,”>0″)
結果:(120+200+150+60)÷4 = 132.5
柏餅の「0」が除外され、残り4件で割られた結果が返ります。
0を除外するだけで平均値が122から132.5へと大きく変わることがわかります。
どちらが正しいかはデータの意味次第ですが、「0は欠損データ」と扱う場合はAVERAGEIFが適切です。
特定の商品名を条件にして平均を求める
「平均範囲」引数を使うと、条件に一致する行のB列の数値だけで平均を計算できます。
=AVERAGEIF(A2:A6,”桜餅”,B2:B6)
A列が「桜餅」の行のB列数値の平均を返す
この数式では、A2:A6の中から「桜餅」に一致する行を探し、対応するB2:B6の値の平均を計算します。
商品カテゴリや担当者別などの軸で平均を出したいときに非常に便利です。
【操作のポイント】
・AVERAGEIFの条件に比較演算子を使う場合は必ずダブルクォーテーションで囲む
・「平均範囲」を省略すると「範囲」そのものが平均計算に使われるため、範囲と平均範囲が同じときは省略してOK
複数条件で絞り込むAVERAGEIFS関数の活用法
条件が2つ以上ある場合は、AVERAGEIFS関数を使います。
AVERAGEIFが条件1つに対応しているのに対し、AVERAGEIFSは最大127個の条件を設定できます。
実務では「月と商品カテゴリを同時に絞り込みたい」「売上数が50以上100以下のデータだけで平均を出したい」といった場面で役立ちます。
AVERAGEIFS関数の構文と引数
AVERAGEIFS関数の構文は以下の通りです。
=AVERAGEIFS(平均範囲, 条件範囲1, 条件1, [条件範囲2, 条件2], …)
平均範囲:平均を計算するセル範囲(必須)
条件範囲1:最初の条件を判定するセル範囲(必須)
条件1:条件範囲1に対する条件(必須)
条件範囲2・条件2:追加の条件(省略可能。最大127組)
AVERAGEIFと引数の順番が異なる点に注意が必要です。
AVERAGEIFは「範囲→条件→平均範囲」の順ですが、AVERAGEIFSは「平均範囲が先頭」に来ます。
この違いを混同すると数式がエラーになるため、しっかり覚えておきましょう。
売上数が50以上の商品だけで各月の平均を求める
サンプルデータを使って、B列(1月売上数)が50以上のデータだけで平均を求める数式は次の通りです。
=AVERAGEIFS(B2:B6,B2:B6,”>=50″)
結果:(120+80+200+150+60)÷5 = 122(全件が50以上のため全件対象)
条件を “>=50,<=150” のように2つ設定するには、以下のように書きます。
=AVERAGEIFS(B2:B6,B2:B6,”>=50″,B2:B6,”<=150″)
対象:桜餅120・柏餅80・チョコ150・アボカド60 → 平均 = 102.5
200のマシュマロが除外され、50以上150以下の4件で平均が計算されます。
このように、範囲を絞り込むことで異常値や外れ値の影響を排除した平均が得られます。
複数列を条件にした実務的な使い方
複数の列に条件をかけることも可能です。
たとえば「A列が桜餅、かつB列が100以上」の行のC列(2月売上数)の平均を求めるには次の通りです。
=AVERAGEIFS(C2:C6,A2:A6,”桜餅”,B2:B6,”>=100″)
A列が桜餅でB列が100以上の行のC列の値を平均する
この数式では、桜餅(120)がB列の条件100以上を満たすため、C列の95が返ります。
条件組み合わせの柔軟さが、AVERAGEIFSの最大の強みです。
【操作のポイント】
・AVERAGEIFSは引数の先頭が「平均範囲」。AVERAGEIFと順番が違う点に要注意
・条件は複数列・複数条件を自由に組み合わせられるため、複雑な集計も一つの数式で完結します
エラーが出たときの対処法とIFERRORの組み合わせ
AVERAGE関数を使っていると、「DIV/0!」などのエラーが表示されることがあります。
エラーが出たまま放置すると集計表の見栄えが悪くなるだけでなく、他の数式への影響も懸念されます。
IFERROR関数と組み合わせることで、エラーを非表示にしたり代替値を表示したりすることができます。
DIV/0!エラーが出る原因
DIV/0!エラーは、計算対象のセルがすべて空白または文字列で、分母(数値の個数)がゼロになってしまった場合に発生します。
たとえば、集計範囲にまだデータが入力されていない月の列でAVERAGEを使うと、このエラーが返ります。
フォーマットを先に作っておき、データが入力されるのを待っている状態のシートではよく見られます。
あらかじめIFERRORで対処しておくことで、きれいな表を保てます。
IFERRORでエラーを非表示にする方法
=IFERROR(AVERAGE(B2:B6),””)
エラーの場合は空白を表示する
=IFERROR(AVERAGE(B2:B6),”データなし”)
エラーの場合は「データなし」と表示する
IFERRORの第2引数に表示したい値を設定することで、エラーの代わりに任意のテキストや数値を返せます。
ダッシュボードや報告書など、見た目を整えたい場面でとくに重宝する組み合わせです。
AVERAGEIFSでエラーが出るケースと対処
AVERAGEIFSで条件に一致するデータが一件もない場合、DIV/0!エラーが返ります。
たとえば、A列に存在しない商品名を条件にした場合などです。
この場合もIFERRORで囲むことでエラーを回避できます。
=IFERROR(AVERAGEIFS(B2:B6,A2:A6,”ハラス”),”対象なし”)
A列に「ハラス」が存在しない場合、「対象なし」と表示される
条件のバリエーションが多い集計シートでは、IFERRORをセットにした数式を標準にしておくと安心です。
【操作のポイント】
・DIV/0!エラーはデータが一件もない場合に発生。IFERRORで囲めば表示を制御できます
・集計フォーマットを先に作る場合は、最初からIFERRORを組み込んだ数式にしておきましょう
AVERAGEAやTRIMMEANなど平均関連関数の使い分け
エクセルには、AVERAGE以外にも平均を求めるための関数がいくつか用意されています。
目的に合った関数を選ぶことで、より精度の高い分析が可能になります。
AVERAGEA関数の特徴と使いどころ
AVERAGEA関数は、文字列やTRUE/FALSEを含むセルも計算対象に含めます。
文字列は0、TRUEは1、FALSEは0として扱われるため、AVERAGE関数とは異なる結果になることがあります。
文字列セルを「0として計算に含めたい」という特殊な要件がある場合に活用できます。
通常の業務では、意図せず文字列が0として計算に入ってしまう恐れがあるため、使用には注意が必要です。
=AVERAGEA(B2:B6)
文字列セルは0として扱われ、空白セルは無視される
TRIMMEAN関数で外れ値を除いた平均を出す
データの中に極端に大きい・小さい値(外れ値)が含まれている場合、AVERAGE関数ではその影響を受けた平均値が返ります。
TRIMMEAN関数を使うと、上下のデータを一定割合で除外した「トリム平均」を計算できます。
=TRIMMEAN(B2:B6,0.2)
上位10%・下位10%(合計20%)のデータを除外した平均を返す
第2引数:除外する割合を0〜1で指定(0.2なら上下各10%除外)
品質管理や試験の採点集計など、偏ったデータの影響を抑えたい場面で有効です。
第2引数には0以上1未満の数値を指定します。
除外されるデータ数は小数点以下を切り捨てて計算されるため、データ件数が少ない場合は除外が発生しないこともあります。
MEDIAN(中央値)とAVERAGEの使い分け
平均(AVERAGE)と中央値(MEDIAN)は混同されやすいですが、用途が異なります。
AVERAGEはすべてのデータを均等に扱うため、外れ値の影響を受けやすいです。
一方、MEDIANはデータを小さい順に並べたときの真ん中の値を返すため、外れ値の影響を受けにくいという特徴があります。
サンプルデータのような少数のデータセットでは、極端に大きい値(例:マシュマロの200)がAVERAGEを押し上げる可能性があります。
データの分布や目的に応じて、AVERAGEとMEDIANを使い分けることが精度の高い分析につながります。
=MEDIAN(B2:B6)
B列のデータ(60,80,120,150,200)を並べた中央値 = 120
【操作のポイント】
・外れ値が心配なデータにはTRIMMEANやMEDIANを活用。目的に合った関数を選びましょう
・AVERAGEAは意図しない文字列を0として計算してしまうリスクがあるため、通常業務ではAVERAGEを優先することをおすすめします
まとめ:AVERAGE関数の平均がおかしい時は原因と正しい使い方を確認しよう
エクセルのAVERAGE関数で平均がおかしいと感じたとき、その原因のほとんどは「0の混入」「文字列数値」「空白セルの誤認識」のいずれかです。
関数そのものの構文を正しく理解することが、トラブル解決の第一歩になります。
0を除外したい場合はAVERAGEIF関数、複数条件で絞り込みたい場合はAVERAGEIFS関数を使うと、より精度の高い平均を求めることができます。
エラーが表示される場合は、IFERRORと組み合わせることで見た目を整えつつ安全に集計が可能です。
また、外れ値が多いデータにはTRIMMEANやMEDIANを活用することで、実態に即した平均値を得ることができます。
AVERAGE関数の正しい使い方をマスターすることで、日々のデータ集計や報告書作成がぐっとスムーズになるでしょう。
ぜひ今回紹介した数式や対処法を、実際の業務で活用してみてください。