ExcelのAVERAGEIFS関数を使いこなす!複数条件で平均を求める方法を解説

Excel

Excelでデータ分析をしていると、「特定の条件を満たすデータだけの平均が知りたい」という場面があります。

例えば、「東京の男性社員の平均年収は?」「4月の売上が100万円以上の店舗の平均値は?」といった具体的な分析です。

そんな時に役立つのがAVERAGEIFS(アベレージ・イフス)関数です。

この記事では、AVERAGEIFS関数の基本的な使い方から、実務で使える応用例、よくあるミスまでをわかりやすく紹介します。

スポンサーリンク

AVERAGEIFS関数ってなに?

AVERAGEIFS関数の役割

AVERAGEIFS関数は、複数の条件に一致するセルの平均値を求めるExcel関数です。

1つの条件だけでなく、2つ以上の条件を同時に指定できる便利な機能です。

基本的な書き方

=AVERAGEIFS(平均対象範囲, 条件範囲1, 条件1, [条件範囲2, 条件2], ...)

構文の説明

  • 平均対象範囲:実際に平均を計算したい数値のセル範囲
  • 条件範囲1:1つ目の条件を判断するセル範囲
  • 条件1:1つ目の条件(文字列、数値、セル参照など)
  • 条件範囲2, 条件2:2つ目以降の条件(必要に応じて追加)

簡単な使用例

=AVERAGEIFS(C2:C100, A2:A100, "東京", B2:B100, "男性")

この式は「地域が『東京』で性別が『男性』の人のスコア平均」を求めます。

データ例

A列(地域)B列(性別)C列(スコア)
東京男性85
大阪女性90
東京男性78
東京女性88

上記の例では、東京の男性(85と78)の平均である81.5が結果として表示されます。

ポイント

  • 条件は2つ以上指定できる(上限は127個まで)
  • 全ての条件を満たすデータのみが計算対象
  • 数値以外のセルは自動的に除外される

複数条件で平均を出せるこの関数は、データ分析の基礎となる機能です。次は、具体的な場面での活用方法を紹介します。

実務で使える条件設定の例を覚えよう

数値条件での絞り込み

売上が特定金額以上の店舗の平均

=AVERAGEIFS(D2:D100, D2:D100, ">=1000000")

「売上が100万円以上の店舗の平均売上」を求めます。

範囲指定での条件

=AVERAGEIFS(C2:C100, C2:C100, ">=80", C2:C100, "<=100")

「スコアが80点以上100点以下の平均点」を計算します。

日付条件での絞り込み

特定の年のデータに限定

=AVERAGEIFS(D2:D100, A2:A100, ">=2024/1/1", A2:A100, "<=2024/12/31")

「2024年のデータの平均」を求めます。

今月のデータに限定

=AVERAGEIFS(D2:D100, A2:A100, ">="&DATE(YEAR(TODAY()),MONTH(TODAY()),1), A2:A100, "<"&DATE(YEAR(TODAY()),MONTH(TODAY())+1,1))

「今月のデータの平均」を動的に計算します。

文字列条件での絞り込み

部分一致での検索

=AVERAGEIFS(C2:C100, A2:A100, "*営業*")

「部署名に『営業』が含まれる人の平均」を求めます。

複数の文字列条件

=AVERAGEIFS(D2:D100, A2:A100, "東京", B2:B100, "A評価")

「東京支店でA評価の売上平均」を計算します。

セル参照を使った動的条件

=AVERAGEIFS(C2:C100, A2:A100, E1, B2:B100, F1)

E1とF1のセルに条件を入力することで、条件を変更するだけで結果が自動更新されます。

よく使う比較演算子

演算子意味使用例
=等しい“=東京”
<>等しくない“<>東京”
>より大きい“>100”
>=以上“>=100”
<より小さい“<100”
<=以下“<=100”
*ワイルドカード営業

実用的な活用例

=AVERAGEIFS(F2:F100, A2:A100, ">=2024/4/1", A2:A100, "<=2024/6/30", C2:C100, "営業部", E2:E100, ">=1000000")

「2024年第2四半期の営業部で売上100万円以上の平均売上」

ポイント

  • 条件式は比較演算子(>=, <= など)も使える
  • ワイルドカード(*)で部分一致検索が可能
  • セル参照を使うと条件を動的に変更できる

条件式は比較演算子(>=, <= など)も使えるため、応用範囲が広がります。次は、条件に一致するデータがない場合の対処法を紹介します。

よくあるエラーと対処法を知っておこう

主なエラーパターン

エラー1:条件に一致するデータがない

症状#DIV/0!エラーが表示される

原因:指定した条件に合うデータが1つもない

対処法:IFERRORで対応

=IFERROR(AVERAGEIFS(C2:C100, A2:A100, "東京", B2:B100, "男性"), "該当データなし")

エラー2:範囲のサイズが一致していない

症状#VALUE!エラーが表示される

原因:平均対象範囲と条件範囲の行数・列数が違う

間違い例

=AVERAGEIFS(C2:C100, A2:A50, "東京")  ❌ 範囲が不一致

正しい例

=AVERAGEIFS(C2:C100, A2:A100, "東京")  ✅ 範囲が一致

エラー3:数値として認識されていない

症状:計算結果が正しくない、または0になる

原因:数値に見えても文字列として保存されている

対処法

  • データを数値形式に変換
  • VALUE関数を使用して数値に変換
  • 「区切り位置」機能でデータ型を修正

データ型による問題と解決策

日付が文字列になっている場合

問題:日付条件が正しく動作しない

解決策

=AVERAGEIFS(C2:C100, A2:A100, ">="&DATEVALUE("2024/1/1"))

数値に余分なスペースが含まれている場合

問題:条件に一致しない

解決策:TRIM関数でスペースを除去してから比較

エラーを予防するチェックポイント

1. 範囲の確認

// 良い例:すべて同じ行数
=AVERAGEIFS(C2:C100, A2:A100, "条件1", B2:B100, "条件2")

2. データ型の確認

  • 数値列に文字列が混在していないか
  • 日付列が正しい日付形式になっているか
  • 条件に使う文字列に余分なスペースがないか

3. 条件の書き方

// 文字列条件はダブルクォートで囲む
=AVERAGEIFS(C2:C100, A2:A100, "東京")

// 数値条件も文字列として指定
=AVERAGEIFS(C2:C100, B2:B100, ">100")

// セル参照の場合はクォート不要
=AVERAGEIFS(C2:C100, A2:A100, E1)

デバッグのコツ

ステップバイステップで確認

  1. まず条件なしで=AVERAGE(C2:C100)
  2. 1つの条件で=AVERAGEIFS(C2:C100, A2:A100, "東京")
  3. 複数条件で:最終的な式

該当データ数の確認

=COUNTIFS(A2:A100, "東京", B2:B100, "男性")

AVERAGEIFSと同じ条件でCOUNTIFSを使い、該当データが何件あるか確認します。

ポイント

  • エラーが出たら、まず範囲とデータ型を確認
  • IFERRORでエラー表示を制御
  • 段階的に条件を追加してテスト

正しく動作させるには、範囲やデータの状態を事前にチェックすることが大切です。次は、AVERAGEIFとの違いについて解説します。

AVERAGEIFとAVERAGEIFSの違いを理解しよう

基本的な違い

項目AVERAGEIFAVERAGEIFS
条件数1つのみ2つ以上可能
構文形式=AVERAGEIF(範囲, 条件, 平均範囲)=AVERAGEIFS(平均範囲, 条件範囲1, 条件1, ...)
引数の順序条件範囲が最初平均範囲が最初

構文の比較

AVERAGEIF(1つの条件)

=AVERAGEIF(条件範囲, 条件, 平均範囲)

AVERAGEIFS(複数条件)

=AVERAGEIFS(平均範囲, 条件範囲1, 条件1, 条件範囲2, 条件2, ...)

実際の使用例

同じ結果を得る書き方

AVERAGEIF を使った場合

=AVERAGEIF(A2:A100, "女性", C2:C100)

AVERAGEIFS を使った場合

=AVERAGEIFS(C2:C100, A2:A100, "女性")

どちらも「女性のスコア平均」を求めますが、引数の順序が違います。

複数条件が必要な場合

AVERAGEIFでは不可能

// これはエラーになります
=AVERAGEIF(A2:A100, "女性", B2:B100, "関西", C2:C100)  ❌

AVERAGEIFSでは可能

=AVERAGEIFS(C2:C100, A2:A100, "女性", B2:B100, "関西")  ✅

引数の順序に注意

AVERAGEIF の順序

  1. 条件範囲:条件を判断するセル範囲
  2. 条件:判断基準
  3. 平均範囲:実際に平均を計算するセル範囲

AVERAGEIFS の順序

  1. 平均範囲:実際に平均を計算するセル範囲
  2. 条件範囲1, 条件1:1つ目の条件セット
  3. 条件範囲2, 条件2:2つ目の条件セット(以下繰り返し)

どちらを使うべき?

AVERAGEIF を使う場面

  • 条件が1つだけの場合
  • シンプルな条件の場合
  • 関数に慣れていない場合
// シンプルな例
=AVERAGEIF(A2:A100, "営業部", B2:B100)

AVERAGEIFS を使う場面

  • 条件が2つ以上の場合
  • 複雑な分析が必要な場合
  • 将来的に条件追加の可能性がある場合
// 複雑な例
=AVERAGEIFS(D2:D100, A2:A100, "営業部", B2:B100, "東京", C2:C100, ">=2024/1/1")

実務での使い分け例

売上分析での比較

単純な部署別平均

=AVERAGEIF(A2:A100, "営業部", D2:D100)

詳細な条件での分析

=AVERAGEIFS(D2:D100, A2:A100, "営業部", B2:B100, "東京", C2:C100, ">="&DATE(2024,4,1))

ポイント

  • 条件が1つならAVERAGEIF、複数ならAVERAGEIFS
  • 引数の順序が関数によって異なることに注意
  • 将来の拡張性を考えるとAVERAGEIFSが便利

シンプルな条件ならAVERAGEIF、複数条件ならAVERAGEIFSと使い分けましょう。最後に、便利な活用アイデアを紹介します。

分析をもっと便利にする応用テクニック

ドロップダウンリストとの組み合わせ

動的な条件選択システム

ステップ1:ドロップダウンリストの作成

  1. データ→データの入力規則→リスト
  2. 選択肢を入力(例:営業部, 開発部, 人事部)

ステップ2:動的な数式の作成

=AVERAGEIFS(D2:D100, A2:A100, E1, B2:B100, F1)

E1とF1にドロップダウンで条件を選択すると、自動で平均が更新されます。

応用例:売上分析ダッシュボード

// セルG1に地域選択、H1に期間選択
=AVERAGEIFS(売上, 地域, G1, 日付, ">="&H1, 日付, "<="&I1)

絶対参照と相対参照の使い分け

コピー可能な数式の作成

=AVERAGEIFS($D$2:$D$100, $A$2:$A$100, B2, $C$2:$C$100, ">=80")
  • $D$2:$D$100:絶対参照(コピー時に変わらない)
  • B2:相対参照(コピー時に自動調整)

部署別・評価別の一覧表作成

部署\評価A評価B評価C評価
営業部=AVERAGEIFS($D$2:$D$100,$A$2:$A$100,$A3,$B$2:$B$100,C$2)
開発部

上記の式をコピーすることで、全ての組み合わせの平均を一括計算できます。

ピボットテーブルの代替として活用

月次売上レポートの自動化

// 1月の平均売上
=AVERAGEIFS(売上, 月, 1, 年, 2024)

// 四半期ごとの平均
=AVERAGEIFS(売上, 月, ">=1", 月, "<=3", 年, 2024)

年齢層別の分析

// 20代の平均年収
=AVERAGEIFS(年収, 年齢, ">=20", 年齢, "<=29")

// 30代の平均年収
=AVERAGEIFS(年収, 年齢, ">=30", 年齢, "<=39")

他の関数との組み合わせ

条件付き集計の完全版

// 件数
=COUNTIFS(A2:A100, "営業部", B2:B100, "東京")

// 合計
=SUMIFS(C2:C100, A2:A100, "営業部", B2:B100, "東京")

// 平均
=AVERAGEIFS(C2:C100, A2:A100, "営業部", B2:B100, "東京")

// 最大値(配列数式)
=MAX(IF((A2:A100="営業部")*(B2:B100="東京"), C2:C100))

エラーハンドリングを含む完全版

=IFERROR(
    AVERAGEIFS(C2:C100, A2:A100, E1, B2:B100, F1),
    "該当データなし"
)

動的な条件作成

セルの値を組み合わせた条件

// セルE1に「>=」、F1に「100」が入力されている場合
=AVERAGEIFS(D2:D100, C2:C100, E1&F1)

日付範囲の動的生成

// 今月のデータ
=AVERAGEIFS(
    売上, 
    日付, ">="&EOMONTH(TODAY(),-1)+1,
    日付, "<="&EOMONTH(TODAY(),0)
)

大量データでのパフォーマンス向上

範囲を限定する

// 全データではなく、必要な範囲のみ指定
=AVERAGEIFS(Table1[売上], Table1[部署], "営業部")

テーブル機能の活用

  1. データをテーブル化(Ctrl+T)
  2. 構造化参照を使用
  3. 自動拡張される範囲

ポイント

  • ドロップダウンとの組み合わせで動的分析
  • 絶対参照・相対参照で効率的な数式作成
  • 他の関数と組み合わせて総合的な分析
  • エラーハンドリングで安定した運用

AVERAGEIFSをうまく使えば、手作業での平均計算が不要になり、正確かつスピーディな分析ができます。

まとめ

ExcelのAVERAGEIFS関数は、複数の条件を指定して平均値を求められる非常に便利な関数です。

覚えるべきポイント

  • 基本構文=AVERAGEIFS(平均範囲, 条件範囲1, 条件1, ...)
  • 複数条件:AND条件で2つ以上の条件を同時指定
  • 比較演算子:>=、<=、<>なども使用可能
  • エラー対策:IFERRORでエラーハンドリング

実務での活用場面

  • 売上分析:地域別・期間別・商品別の平均売上
  • 人事データ:部署別・年齢別・評価別の平均給与
  • 成績管理:科目別・クラス別・期間別の平均点
  • 品質管理:工程別・日別・製品別の平均値

よく使われるパターン

// 期間限定の分析
=AVERAGEIFS(売上, 日付, ">=2024/4/1", 日付, "<=2024/6/30", 地域, "東京")

// 評価基準での分析
=AVERAGEIFS(売上, 売上, ">=1000000", 部署, "営業部")

// 動的な条件
=AVERAGEIFS(成績, 科目, E1, クラス, F1, 期間, G1)

コメント

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