「条件に合うデータだけ平均を出したい」
ExcelやGoogleスプレッドシートを使っていると、誰もが一度は直面する場面です。
店舗別の平均売上、欠席者を除いた平均点、80点以上の人だけの平均評価、今月分だけの平均単価――
こうした集計を正しく行うために欠かせないのが、アベレージイフ関数(AVERAGEIF)です。
しかし実際には、
「条件を入れたのに数値が合わない」
「文字列条件が一致しない」
「該当データがなくて #DIV/0! が出てしまう」
「条件範囲と平均範囲がズレている気がする」
といった悩みを抱えたまま、なんとなく使っている方も少なくありません。
アベレージイフ関数は非常に便利な一方で、条件の書き方・範囲指定・データの状態を正しく理解していないと、
「エラーは出ていないのに、実は数字が間違っている」という最も危険な状態に陥りやすい関数でもあります。
この記事では、アベレージイフ関数の基本構文から、
数値・文字列・部分一致・空白・日付条件の具体的な書き方、
#DIV/0! を出さないための安全な設計、
条件が効かないときの切り分け方法、
そして複数条件になった場合の AVERAGEIFS への正しい移行まで、
実務で本当に困らないレベルまで丁寧に解説します。
「とりあえず動く式」から、「自信を持って提出できる集計」へ。
アベレージイフ関数を、安心して使いこなすための完全ガイドとして、ぜひ最後までご覧くださ
※本コンテンツは「記事制作ポリシー」に基づき、正確かつ信頼性の高い情報提供を心がけております。万が一、内容に誤りや誤解を招く表現がございましたら、お手数ですが「お問い合わせ」よりご一報ください。速やかに確認・修正いたします。
アベレージイフ関数の基本
書式と3つの引数の役割
AVERAGEIFの書式は次のとおりです。
-
=AVERAGEIF(範囲, 条件, [平均対象範囲])
ここで重要なのは、3つの引数を“役割で”理解することです。慣れないうちは「どこに何を書けばいいか」を暗記しがちですが、役割が分かっていればデータが変わっても組み立て直せます。
-
範囲(条件を探す場所)
-
「どの列(または行)で条件判定するか」を指定します。
-
例:店舗名で絞るなら店舗名の列、点数で絞るなら点数の列、日付で絞るなら日付の列。
-
-
条件(残すルール)
-
どのデータを平均に含めるかを決めるルールです。
-
文字列一致、数値の大小、空白、部分一致など、ここが一番つまずきやすいポイントです。
-
-
平均対象範囲(平均する数値の場所)
-
平均を計算したい値の列(または行)を指定します。
-
例:売上の平均なら売上列、点数の平均なら点数列、作業時間の平均なら作業時間列。
-
具体例で考えてみます。A列が「店舗名」、B列が「売上」だったとき、「新宿店の売上平均」を出すなら、こう整理できます。
-
条件で見たいのは店舗名 → 範囲はA列
-
条件は新宿店 → 条件は “新宿店”
-
平均したいのは売上 → 平均対象範囲はB列
式は次の形になります。
-
=AVERAGEIF(A2:A100,"新宿店",B2:B100)
ここまでがAVERAGEIFの基本形です。以降は、この基本形を土台として条件指定を強化していきます。
平均対象範囲を省略できる条件
平均対象範囲は「省略できる」と説明されることがありますが、実務ではここで誤解が起きやすいです。結論から言うと、省略できるのは次のケースだけです。
-
条件判定に使う範囲と、平均したい範囲が同じとき
たとえば、B列が点数で「80点以上の点数だけ平均したい」なら、条件判定も平均もB列です。この場合は平均対象範囲を省略できます。
-
=AVERAGEIF(B2:B100,">=80")
これは「B2:B100の中で、80以上のセルを集めて、その平均を出す」という意味です。
一方で、条件判定と平均する列が違うのに省略すると、計算対象がズレます。たとえば「店舗名で絞って売上を平均したい」のに平均対象範囲を省略すると、平均しようとするのは店舗名列(文字列)になってしまい、意図した集計にはなりません。
実務の目安としては次の通りです。
-
範囲と平均対象範囲が同じ列なら省略してよい
-
違う列なら省略しない方が安全
特に、集計表を誰かに引き継ぐ可能性がある場合は、あえて省略せずに「どの列を平均しているか」を見ただけで分かる式にしておく方がトラブルを減らせます。
空白や文字列が混ざるときの挙動
実データでは「全部がきれいな数値」ということはあまりありません。空白がある、文字列が紛れている、ゼロが欠損扱いなのか実測値なのかが曖昧、などが日常的に起こります。
AVERAGEIFを使う上で、特に気を付けたいのは次の3点です。
-
一致するデータが0件だと #DIV/0! になりやすい
-
条件に合うデータが一つもない場合、平均は「0件で割る」形になるためエラーになります。
-
レポートやダッシュボードでこれが出ると、見た目が崩れ、他の計算も連鎖的に崩れることがあります。
-
-
“空白に見える”データが空白ではないことがある
-
入力者がスペースを入れている
-
インポートで不可視文字が混ざっている
-
こうした場合、空白判定が効かず「条件が一致しない」と感じやすいです。
-
-
数値に見えて実は文字列(テキスト)扱いになっている
-
例えば「100」が左寄せで表示される、先頭にアポストロフィが入っている、など。
-
数値比較(>=80など)が効かなくなり「結果が変わらない」「おかしい」と感じます。
-
このあたりの“実務的な落とし穴”は後半のチェックリストでまとめて対処します。まずは次の章で、条件の書き方をテンプレとして固めましょう。
条件の書き方テンプレ集
数値条件のテンプレ
数値条件の基本は「比較演算子」です。ここで迷いやすいのは、条件を文字列として書く点です。多くの場合、次のようにダブルクォーテーションで囲みます。
-
80以上:
">=80" -
80より大きい:
">80" -
60以下:
"<=60" -
60未満:
"<60" -
0以外:
"<>0"(<> は「等しくない」) -
100ちょうど:
"=100"(または"100"でも一致することが多いですが明示が安心)
例:点数が80以上の平均(同じ列を条件判定・平均)
-
=AVERAGEIF(B2:B100,">=80")
例:単価が0以外の平均(0を“欠損”扱いにしたい)
-
=AVERAGEIF(C2:C100,"<>0")
次に頻出なのが「しきい値をセル参照にしたい」ケースです。たとえばE1にしきい値が入っているとき、次の書き方を覚えると応用が効きます。
-
">="&E1 -
"<"&E1 -
"<>”&E1(一致しないもの)
例:E1以上の平均
-
=AVERAGEIF(B2:B100,">="&E1)
この形を知っておくと、しきい値を変えるたびに式を編集する必要がなくなり、集計表が管理しやすくなります。
文字列一致のテンプレ
文字列の条件は基本的に「完全一致」です。最も分かりやすいのは次の形です。
-
=AVERAGEIF(A2:A100,"新宿店",B2:B100)
セル参照で指定したい場合は、条件の部分を参照に置き換えます。
-
=AVERAGEIF(A2:A100,F2,B2:B100)
文字列一致でつまずきやすいポイントは次の通りです。
-
全角/半角の違い(例:ア と ア)
-
前後スペース(「新宿店 」のように末尾に空白)
-
表記ゆれ(「新宿」「新宿店」「新宿店(本店)」など)
対策としては、表記を入力規則やマスタで統一するのが理想ですが、すぐに整備できない場合は後述の「部分一致」も検討します。
部分一致とワイルドカードのテンプレ
「○○を含む」「○○で始まる」「○○で終わる」のような部分一致は、ワイルドカードを使うと簡単に書けます。
-
*:任意の文字列(0文字以上) -
?:任意の1文字
テンプレは次の通りです。
-
「Aで始まる」:
"A*" -
「Aを含む」:
"*A*" -
「Aで終わる」:
"*A" -
「3文字目がA」:
"??A*"(先頭2文字は任意、3文字目がA)
例:商品名に「パック」を含む商品の平均単価
-
=AVERAGEIF(A2:A100,"*パック*",B2:B100)
部分一致は便利ですが、誤集計の原因にもなり得ます。例えば「新宿」と「西新宿」を区別したいのに、"*新宿*" にしてしまうと両方が含まれます。部分一致を使うときは「どこまで含めてよいか」を明確にして使うのが安全です。
また、もう一つ重要な注意点があります。* や ? を“記号そのもの”として検索したい場合は、そのままだとワイルドカードとして扱われてしまいます。そのときは ~(チルダ)でエスケープします。
-
*を文字として探す:"~*" -
?を文字として探す:"~?"
例えば品番に「A*100」という文字列が含まれていて、それを探したい場合、"*A*100*" のように書くと「Aの後に何かがあって100」も拾ってしまいます。正確に * を含む形を探したいなら ~* を使います。
空白を条件にするテンプレ
未入力の行だけ、入力済みの行だけ、といった集計はかなり多いです。空白条件のテンプレは次の通りです。
-
空白に一致:
"" -
空白以外:
"<>"&""
例:備考が空白の行だけ工数の平均を出す
-
=AVERAGEIF(D2:D100,"",C2:C100)
例:備考が空白ではない行だけ工数の平均を出す
-
=AVERAGEIF(D2:D100,"<>"&"",C2:C100)
ここでの落とし穴は「空白に見えるが空白ではない」パターンです。特にスペースが入っていると、"" では一致しません。
この場合、データ側のクリーニング(TRIMで前後スペースを落とす、置換で不要文字を消すなど)を行うのが根本解決になります。関数側で無理に吸収しようとすると、式が読みづらくなり保守性が落ちます。
日付条件のテンプレ
日付条件は、うまくいけば強力ですが、つまずきやすい代表格でもあります。理由は「見た目が日付でも、内部的には文字列」というデータが混ざりやすいからです。
日付条件の基本テンプレは次の通りです。
-
ある日以降:
">="&DATE(2025,12,1) -
ある日より前:
"<"&DATE(2025,12,1) -
今日以降:
">="&TODAY()
例:2025/12/01以降の売上平均(A列が日付、B列が売上)
-
=AVERAGEIF(A2:A100,">="&DATE(2025,12,1),B2:B100)
ただし、ここで覚えておきたい考え方があります。
「ある月だけ」「ある期間内」など“範囲条件”は、AVERAGEIF(条件1つ)で無理にやるより、AVERAGEIFS(複数条件)に切り替えた方が事故が減ります。
なぜなら、期間指定は本質的に「開始日以上」かつ「終了日以下(または翌日未満)」の2条件になるからです。どうしてもAVERAGEIFだけでやろうとすると、補助列で年月キーを作って文字列一致にする、などの工夫が必要になります。
例:月ごとに集計したい場合の安定策(補助列)
-
日付が入った列の隣に「年月キー」を作る
-
=TEXT(日付セル,"yyyy-mm")
-
-
12月だけの平均を出す
-
=AVERAGEIF(年月列,"2025-12",売上列)
-
補助列方式は「式が簡単」「見た目で確認しやすい」「引き継ぎしやすい」という強みがあります。データ量が多い現場ほど、こうした“分かりやすい設計”が効いてきます。
よくある失敗と直し方
条件が効かないときのチェックリスト
「条件を入れたのに結果が変わらない」「明らかに違う数字が出る」――こうしたときは、原因を一つずつ潰すのが近道です。次のチェックリストを上から順に確認すると、ほとんどの問題は切り分けできます。
-
条件が文字列なら、ダブルクォーテーションで囲んでいるか
-
"新宿店"のように書けているか
-
-
数値条件の演算子が正しいか
-
">=80"のように、演算子が条件の先頭にあるか
-
-
しきい値をセル参照にする場合、演算子と参照を連結できているか
-
">="&E1のように&を使っているか
-
-
条件範囲に表記ゆれがないか
-
「新宿店」と「新宿 店」などが混ざっていないか
-
-
条件範囲に前後スペースが混ざっていないか
-
見た目では分からないので要注意
-
-
数値が文字列になっていないか
-
左寄せ表示、インポート由来のテキスト化など
-
-
日付が日付として認識されているか
-
見た目だけ日付の文字列になっていないか
-
-
条件範囲と平均対象範囲の行数・列数が一致しているか
-
片方だけ1行ずれていないか
-
-
式をコピーした結果、参照がずれていないか
-
固定したい範囲は $(絶対参照)を検討する
-
-
フィルターで絞っても、関数は非表示行も含めて計算することを理解しているか
-
「表示されている分だけ平均したい」なら別の方法が必要になる場合があります
-
このチェックリストの中で、特に多い原因は次の2つです。
-
条件範囲と平均対象範囲のズレ
-
データの型(数値なのか文字列なのか、日付なのか文字列なのか)
「式が悪い」と思いがちですが、実はデータ側が原因であることが非常に多いです。式を複雑化させる前に、まずデータの状態を疑うのが、結果的に一番早い解決につながります。
#DIV/0!が出る理由と消し方
AVERAGEIFで #DIV/0! が出る最も典型的な理由は、次の状態です。
-
条件に合うデータが1件もない(件数0)
平均は「合計 ÷ 件数」です。件数が0なら割り算できないため、エラーになります。これは“間違い”というより“計算できない状態を正直に表している”と捉えると理解しやすいです。
しかし、レポートや集計表ではエラー表示がそのまま出るのは困ります。そこで、表を崩さないための方法を2つ覚えておくと便利です。
方法1:IFERRORでまとめて抑止する
-
=IFERROR(AVERAGEIF(A2:A100,F2,B2:B100),0) -
該当なしなら0(または
""空白)にする
この方法はシンプルで、式が短いのが利点です。ただし「本当に0なのか、該当なしで0表示なのか」が見分けづらいことがあります。分析用途なら空白、報告用途なら0、など使い分けると良いです。
方法2:COUNTIFで件数を先に判定する
-
=IF(COUNTIF(A2:A100,F2)=0,"",AVERAGEIF(A2:A100,F2,B2:B100))
この方法は「該当なしのときは空白」「該当ありのときだけ平均」という意図が明確になります。
また、後工程で「全体平均」「合計」などの集計をするとき、該当なしが空白だと誤解が起きにくいケースが多いです。
運用で迷ったら、次の考え方が判断の助けになります。
-
0が「実測の0」として意味を持つなら、該当なしは空白にする
-
0が「表示上の都合」で問題ないなら、IFERRORで0にしてもよい
-
上司や関係者が数字を見て判断する資料なら、「該当なし」を空白や注記で分かるようにする方が安全
範囲ズレで誤集計を起こすパターン
AVERAGEIFの怖さは、エラーではなく“それっぽい数字”が出てしまう誤集計です。
特に多いのが 範囲ズレ です。範囲ズレは、次のような状態で起こります。
-
条件範囲:A2:A100
平均対象範囲:B3:B101(1行ずれている) -
条件範囲:A2:A500
平均対象範囲:B2:B480(途中までしか含まれていない) -
行追加・行削除のあと、片方の範囲だけが更新されていない
これがなぜ危険かというと、「数字は出る」ため、見た目では気付きにくいからです。
しかも、ズレた状態でも“平均っぽい値”になりやすく、検算しないと長期間見逃されることがあります。
範囲ズレを防ぐには、次のいずれかの設計が効果的です。
-
表の範囲をきちんと揃えて指定する(基本中の基本)
-
Excelのテーブル化(構造化参照)を使い、追加行に追従させる
-
補助列や集計用の列を作り、目視で検算しやすい形にする
-
チェック列(COUNTIFなど)で件数も一緒に出す
-
平均だけだと違和感に気づきにくいので、「件数」も並べて出すと異常が見つかりやすいです
-
例えば、店舗別平均を作るなら「平均売上」と同じ行に「件数(該当数)」も出しておくと、急に件数が減ったりゼロになったりしたときに、範囲ズレや条件不一致にすぐ気づけます。
AVERAGEIFSとの使い分け
1条件はAVERAGEIFが速い
条件が1つで済むなら、AVERAGEIFは非常に扱いやすい関数です。式が短く、読みやすく、テンプレも使い回せます。
例:部署が「営業部」の平均残業時間
-
=AVERAGEIF(部署列,"営業部",残業列)
例:点数が60点以上の平均点
-
=AVERAGEIF(点数列,">=60",点数列)(平均対象範囲は省略も可能)
1条件で完結する限り、AVERAGEIFを軸に考えるのが自然です。
2条件以上はAVERAGEIFSに切り替える
条件が2つ以上になると、AVERAGEIFだけで頑張る方法も存在しますが、引き継ぎや保守、誤集計リスクを考えると、基本は AVERAGEIFS が適切です。
例:「営業部」かつ「等級A」の平均単価
-
=AVERAGEIFS(単価列,部署列,"営業部",等級列,"A")
例:「2025/12/01以降」かつ「2026/01/01より前」(12月分)の平均売上
-
=AVERAGEIFS(売上列,日付列,">="&DATE(2025,12,1),日付列,"<"&DATE(2026,1,1))
このように、期間指定は典型的に複数条件になります。
「月だけ集計したい」場面ほどAVERAGEIFSが自然にフィットします。
AVERAGEIFSの利点は次の通りです。
-
条件を「範囲・条件」のペアで追加できるため、意図が読み取りやすい
-
条件を増やしても構造が崩れにくい
-
後から見た人が修正しやすい(どの条件が効いているかが明確)
「最初は1条件だったけど、途中で条件が増えた」という現場は多いので、拡張が見えているなら早めにAVERAGEIFSへ寄せるのも一つの戦略です。
置き換え手順と例
AVERAGEIFからAVERAGEIFSへ移るときに迷うポイントは、「引数の並びが変わる」ことです。
ただし、考え方はシンプルで、次の手順に沿えば迷いません。
-
まず「平均したい列(平均範囲)」を先頭に置く
-
次に「条件範囲1」「条件1」を書く
-
追加したい条件があれば、「条件範囲2」「条件2」を足していく
置き換え例で確認しましょう。
もともと:店舗が新宿店の売上平均
-
=AVERAGEIF(A2:A100,"新宿店",B2:B100)
ここに「商品が商品A」という条件を追加したい場合(C列が商品名)
-
=AVERAGEIFS(B2:B100,A2:A100,"新宿店",C2:C100,"商品A")
この形に慣れると、さらに「担当者」「曜日」「キャンペーン有無」など、条件が増えても整然と扱えます。
逆に、AVERAGEIFのまま無理やり条件を増やすと、式が複雑になり、誤集計や修正漏れが起きやすくなります。
Excelとスプレッドシートで迷わないコツ
式の考え方は同じ、参照の癖が違う
ExcelとGoogleスプレッドシートでは、AVERAGEIFという関数名も基本の考え方もほぼ共通です。
そのため「どちらで覚えても応用できる」のですが、混乱が起きるのは関数の違いではなく、主に次のような“データの入り方”や“参照の扱い”の差です。
-
CSVや外部データを取り込んだとき、数値や日付が文字列として入る
-
入力規則や表記統一の仕組みが弱いと、文字列条件が一致しにくい
-
共有編集の環境では、意図せずスペースや表記ゆれが混ざる
-
範囲参照をコピーする運用が多いと、相対参照ズレが発生しやすい
つまり、迷わないコツは「関数を暗記する」よりも、「データの型」「範囲指定」「参照ズレ」を疑う視点を持つことです。
条件が効かないときは、まず次を確認すると早いです。
-
条件範囲のセルを別セルにコピーして、見た目が同じか(前後スペースがないか)
-
数値が計算できる状態か(文字列化していないか)
-
日付を並べ替えたときに正しく並ぶか(文字列日付だと崩れることがある)
式が正しくても、データが正しくなければ正しい結果は出ません。
困ったら一次情報で仕様確認するポイント
「これは自分のミスなのか、仕様なのか」を切り分けたいときは、公式ヘルプ(一次情報)に戻るのが最短です。特に次のテーマは、仕様を知っているだけで解決が早くなります。
-
ワイルドカード
*と?の意味 -
~(チルダ)でワイルドカードを文字として扱う方法 -
該当なしで #DIV/0! が出る理由
-
平均対象範囲を省略した場合の扱い
-
条件範囲と平均範囲の対応関係(範囲ズレが起きる条件)
実務では、関数の名前や構文を調べるより「この条件の書き方は正しいのか」「このデータの型は何か」を確認する方が重要です。
疑問が出たら、まずは小さなサンプル(2〜5行程度)で同じ条件を試し、そこで挙動が理解できれば本番の表にも落とし込めます。
まとめ
アベレージイフ関数で失敗しないための要点
アベレージイフ関数(AVERAGEIF)は、条件付き平均を短い式で出せる便利な関数です。一方で、ミスが起きる原因はかなりパターン化しています。最後に、押さえておくべき要点を整理します。
-
「条件を探す範囲」と「平均する範囲」を役割で分けて考える
-
数値条件は
">=80"、セル参照なら">="&E1の形にする -
文字列一致は表記ゆれ・前後スペースが最大の敵
-
部分一致は
*と?を使えるが、拾いすぎに注意する -
空白条件は
""と"<>"&""をテンプレで覚える -
一致なしで #DIV/0! が出るので、IFERRORや件数判定で表を崩さない
-
範囲ズレは“数字が出るのに間違う”最危険パターン。件数も並べて検算しやすくする
-
条件が2つ以上になったら、AVERAGEIFSへ切り替える方が安全で保守もしやすい
次に取るべき行動
すぐに手元の表で再現できる形にするために、次の順で進めると迷いません。
-
まずは1つ、基本形のAVERAGEIFを作る
-
条件範囲、条件、平均範囲を役割で決めて入力する
-
-
次に、該当なしでも表が崩れないようにする
-
IFERRORまたはCOUNTIF判定を追加する
-
-
仕上げとして、条件が増える可能性を見て設計を整える
-
期間指定や複数条件が見えるなら、AVERAGEIFSや補助列の導入も検討する
-
この流れで作っておけば、「数字が合っているか不安」「直し方が分からない」という状態から抜け出しやすくなります。
仕様変更と更新への注意
関数そのものの仕様は大きく変わりにくい一方で、現場ではデータの取り込み方や入力の仕方が変わり、突然「条件が効かない」「日付が一致しない」といった問題が起こります。
そういうときほど、式を複雑にする前に次を確認すると復旧が早いです。
-
データの型(数値・文字列・日付)が想定通りか
-
条件の書き方(引用符、演算子、連結)が正しいか
-
条件範囲と平均対象範囲がズレていないか
そして、どうしても判断がつかない場合は、公式ヘルプで「その挙動が仕様かどうか」を確認すると、迷いが一気に減ります。条件付き平均は集計の土台になることが多いので、今回のテンプレとチェックリストを手元に残し、表を作るたびに再利用していくのがおすすめです。