概要
AVERAGEIFSは「複数の条件をすべて満たすセルの平均」を求める関数です。COUNTIFSやSUMIFSと同じくAND条件で判定します(“OR”にしたい場合は式を分けて平均を組み立てます)。地域・月・金額閾値・空白/非空などを組み合わせた、実務向けの柔軟な平均計算に向いています。
基本の使い方
- 書式:
- 平均範囲: 平均したい数値の列
- 条件範囲n: 判定に使う列
- 条件n: 判定内容(例: “東京”, “>=100”, “<>”, “限定“)
=AVERAGEIFS(平均範囲, 条件範囲1, 条件1, [条件範囲2, 条件2], …)
- 最小例(2条件):
- 説明: 地域=東京 かつ 月=12月 の行に対応するB列の平均。
=AVERAGEIFS(B2:B200, A2:A200, "東京", C2:C200, "12月")
- 比較演算子をセル参照と結合:
- 説明: H1の値以上の行だけ平均(演算子は文字列、値はセルで渡す)。
=AVERAGEIFS(C2:C200, D2:D200, ">=" & H1)
具体例
- 例1: 文字一致+数値しきい値
- ポイント: AND判定: 両条件を満たす行の金額だけ平均。
=AVERAGEIFS(売上[金額], 売上[地域], "東京", 売上[金額], ">=100")
- 例2: 日付範囲(期間の平均) 期間をH1〜H2で指定
- ポイント: 日付は数値: セル参照を使うと安全。
=AVERAGEIFS(売上[金額], 売上[日付], ">=" & H1, 売上[日付], "<=" & H2)
- 例3: 部分一致(ワイルドカード) 商品名に「限定」を含む行の平均
- ポイント: “”=任意文字列, “?”=任意1文字。* 文字通りの「*」「?」は
~*、~?でエスケープ。
- ポイント: “”=任意文字列, “?”=任意1文字。* 文字通りの「*」「?」は
=AVERAGEIFS(売上[金額], 売上[商品名], "*限定*")
- 例4: 空白/非空で絞り込み 備考が“空でない”行だけ平均
- ポイント: 空文字(“”)も非空扱いに注意: データ設計により結果が変わります。
=AVERAGEIFS(売上[金額], 売上[備考], "<>")
作業効率のコツ
- 条件をセル参照にして柔軟化:
- 説明: H1/H2に条件を入れ替えるだけで式は不変。
=AVERAGEIFS(B2:B200, A2:A200, H1, C2:C200, H2)
- 絶対参照で範囲固定(コピー時のズレ防止):
=AVERAGEIFS($B$2:$B$200, $A$2:$A$200, H1, $C$2:$C$200, H2)
- テーブル(構造化参照)で可読性・保守性UP:
=AVERAGEIFS(売上[金額], 売上[地域], H1, 売上[月], H2)
- OR条件(複数値のいずれか)を平均化する発想: 地域が「東京」または「大阪」の平均(小規模なら加算して平均を作る)
- 説明: 真の“件数加重の平均”にしたい場合はSUMIFS/COUNTIFSで合算して割る方が厳密(下のテンプレート参照)。
=(AVERAGEIFS(売上[金額], 売上[地域], "東京")
+ AVERAGEIFS(売上[金額], 売上[地域], "大阪")) / 2
よくあるつまずきと対策
- 範囲サイズ不一致:
原因: 条件範囲の行数・列数が平均範囲と異なる。
対策: 開始行・終了行を揃える。テーブル参照なら安全。 - 数値に見える文字列の混在:
原因: “123”がテキストで比較が狂う。
対策: VALUEで数値化、入力規則・書式を統一。 - 日付判定が効かない:
原因: テキスト日付やロケール差。
対策: 「>=」や「<=」は文字列、日付はセル参照で結合。
=AVERAGEIFS(E2:E200, D2:D200, ">=" & H1, D2:D200, "<=" & H2)
- OR条件の平均が歪む:
原因: 単純に平均を2つ足して割ると件数差を無視。
対策: SUMIFSで合計、COUNTIFSで件数を求め、合計/件数で厳密な平均にする。
応用テンプレート
- OR条件を厳密な平均で作る(件数加重)
=SUM(
SUMIFS(売上[金額], 売上[地域], "東京"),
SUMIFS(売上[金額], 売上[地域], "大阪")
)
/ SUM(
COUNTIFS(売上[地域], "東京"),
COUNTIFS(売上[地域], "大阪")
)
- 期間+カテゴリ+非空の組み合わせ
=AVERAGEIFS(売上[金額],
売上[日付], ">=" & H1,
売上[日付], "<=" & H2,
売上[カテゴリ], "食品",
売上[備考], "<>")
- しきい値をセルで柔軟指定 閾値がH3
=AVERAGEIFS(売上[金額], 売上[金額], ">=" & H3)
- 複数列を同じ条件で平均(列ごとの平均を表示)
=AVERAGEIFS(売上[金額], 売上[地域], H1)
=AVERAGEIFS(売上[送料], 売上[地域], H1)
練習問題
- 問題1: A列=地域、B列=月、C列=売上。地域が「東京」かつ月が「12月」の売上平均をC201に表示してください。
- 解答例:
=AVERAGEIFS(C2:C200, A2:A200, "東京", B2:B200, "12月")
- 問題2: D列=金額、E列=日付。H1〜H2の期間内の金額平均をD201に表示してください。
- 解答例:
=AVERAGEIFS(D2:D200, E2:E200, ">=" & H1, E2:E200, "<=" & H2)
- 問題3: テーブル「売上」で、カテゴリが「食品」、備考が空でない行の金額平均をH2に表示してください。
- 解答例:
=AVERAGEIFS(売上[金額], 売上[カテゴリ], "食品", 売上[備考], "<>")
- 問題4: 地域が「東京」または「大阪」の金額の厳密な平均をH2に表示してください(OR条件・件数加重)。
- 解答例:
=SUM(SUMIFS(売上[金額], 売上[地域], "東京"),
SUMIFS(売上[金額], 売上[地域], "大阪"))
/ SUM(COUNTIFS(売上[地域], "東京"),
COUNTIFS(売上[地域], "大阪"))
まとめ
- 複数条件の平均:
=AVERAGEIFS(平均範囲, 条件範囲1, 条件1, …)(AND判定) - OR条件: SUMIFS/COUNTIFSを組み合わせて“合計/件数”で作ると正確
- 演算子は文字列+セル参照:
">=" & H1で安全に比較 - テーブル参照: 読みやすく、行追加に自動追従
