未分類

【Excel】エクセルのAVERAGEIFS関数で平均対象範囲を複数列に指定する方法(複数列にまたがる平均の出し方・配列活用も)

当サイトでは記事内に広告を含みます

【Excel】エクセルのAVERAGEIFS関数で平均対象範囲を複数列に指定する方法(複数列にまたがる平均の出し方・配列活用も)

エクセルのAVERAGEIFS関数を使っていると、「複数の列にまたがるデータをまとめて平均したい」という場面に出くわすことがあります。たとえば、1月・2月・3月それぞれの売上列があり、条件を満たす行の3か月分の平均をまとめて求めたいケースです。

実は、AVERAGEIFS関数の平均対象範囲は標準では1列(1つの範囲)しか指定できません。そのため、複数列にまたがる平均を求めるには少し工夫が必要になります。

この記事では、AVERAGEIFS関数で複数列を平均対象にする方法を、配列の活用も含めてわかりやすく解説していきます。複数列にまたがる集計で困っている方は、ぜひ参考にしてみてください。

AVERAGEIFS関数で複数列を平均対象にする基本的な考え方

それではまず、AVERAGEIFS関数で複数列にまたがる平均を求めるための基本的な考え方と方法を解説していきます。

AVERAGEIFS関数は通常、平均対象範囲に1つの列(または1つの連続した範囲)しか指定できません。複数列の値をまとめて平均したい場合は、AVERAGEIFS関数を複数使って足し合わせるか、配列数式を活用する方法が有効です。

AVERAGEIFS関数を複数組み合わせて平均を求める方法

最もシンプルな方法は、列ごとにAVERAGEIFS関数を記述し、最終的に全体の平均を求める方法です。

例)A列:地域、B列:1月売上、C列:2月売上、D列:3月売上
「東京」の1月〜3月の全データをまとめた平均を求める方法1:列ごとに合計してから件数で割る=(SUMIFS(B1:B10,A1:A10,“東京”)
+SUMIFS(C1:C10,A1:A10,“東京”)
+SUMIFS(D1:D10,A1:A10,“東京”))
/ COUNTIF(A1:A10,“東京”)

各月の合計を足してから「東京」の件数で割ることで全体の平均が求められる

この方法は数式が長くなりますが、動作が直感的でわかりやすいのが特徴です。列数が少ない場合に向いています。

 

AVERAGEIFS関数を並べて各列の平均を個別に求める方法

各列の平均を個別に求めて並べて表示する方法もあります。

例)1月・2月・3月それぞれの「東京」の平均を別々のセルに表示する1月の平均:=AVERAGEIFS(B1:B10, A1:A10,“東京”)
2月の平均:=AVERAGEIFS(C1:C10, A1:A10,“東京”)
3月の平均:=AVERAGEIFS(D1:D10, A1:A10,“東京”)

この方法では月別の平均を一覧で確認できるため、月ごとの推移を把握したい場合や比較表を作りたい場合に向いています。

複数列の平均を求める際の列の選び方

複数列にまたがる平均を求める場合、対象とする列の選び方が重要です。以下の表を参考に、目的に合った方法を選びましょう。

目的 おすすめの方法 特徴
全列をまとめた1つの平均が欲しい SUMIFS合計 ÷ COUNTIF件数 シンプルで理解しやすい
列ごとの平均を並べて表示したい 列ごとにAVERAGEIFSを記述 月別・項目別の比較に向く
数式を短くまとめたい 配列数式を活用する 上級者向けだがコンパクト

配列を活用して複数列の平均を求める方法

続いては、配列を活用してAVERAGEIFS関数で複数列にまたがる平均をコンパクトに求める方法を確認していきます。

配列数式を使うと、複数列を1つの数式でまとめて処理できます。少し高度なテクニックですが、覚えると集計の幅が大きく広がります。

AVERAGE関数とIF関数を組み合わせた配列数式

AVERAGEIFS関数ではなく、AVERAGE関数とIF関数を組み合わせた配列数式を使うことで、複数列にまたがる条件付き平均を求めることができます。

例)A列が「東京」の場合の、B列とC列のすべての値の平均を求める=AVERAGE(IF(A1:A10=“東京”,(B1:B10,C1:C10)))

※ Ctrl+Shift+Enterで入力(配列数式として確定する)
数式バーに{=AVERAGE(IF(…))}のように波括弧が付く

配列数式はCtrl+Shift+Enterで確定する点が通常の数式と異なります。Enterだけで確定すると正しく動作しないため注意が必要です。

Excel 365・2021のSPILL機能を使った方法

Excel 365やExcel 2021以降では、動的配列関数が使えるため、Ctrl+Shift+Enterを使わずに配列を扱えます。

例)Excel 365での書き方=AVERAGE(AVERAGEIFS(B1:D10, A1:A10,“東京”)×{1,1,1})

または

=AVERAGEIFS(B1:B10,A1:A10,“東京”) の結果をAVERAGEで再度平均する

※バージョンによって対応方法が異なるため、使用しているExcelのバージョンを確認してください

Excel 365を使っている場合は、より柔軟な方法が使えることが多いため、バージョンに合わせた書き方を探してみるとよいでしょう。

SUMPRODUCTを使った複数列の条件付き平均

配列数式の代替として、SUMPRODUCT関数を使う方法もあります。SUMPRODUCT関数はCtrl+Shift+Enterなしで使えるため、扱いやすいのが特徴です。

例)A列が「東京」の場合の、B列とC列の平均を求める=SUMPRODUCT((A1:A10=“東京”)*(B1:B10+C1:C10))
/ SUMPRODUCT((A1:A10=“東京”)*2)A列が「東京」の行のB列とC列の合計を、条件に一致する行数×2で割ることで平均を求める

SUMPRODUCT関数は少し計算のロジックが複雑ですが、Ctrl+Shift+Enterが不要なため、通常の数式として使える点が大きなメリットです。

複数列にまたがる平均計算でよくある疑問と注意点

続いては、AVERAGEIFS関数で複数列を扱う際によくある疑問点と注意事項を確認していきます。

複数列の平均計算は通常の集計より複雑になる分、思わぬところでつまずくこともあります。よくある疑問を事前に把握しておきましょう。

平均対象範囲と条件範囲のサイズを一致させる

AVERAGEIFS関数では、平均対象範囲と条件範囲は同じ行数・列数でなければなりません。サイズが一致していない場合、VALUEエラーが返ります。

エラーを防ぐための確認ポイント・平均対象範囲と条件範囲の行数が同じかどうか確認する
・条件範囲が複数ある場合も、それぞれ同じ行数になっているか確認する
・列方向に範囲を指定する場合は、どの範囲も同じ列数かどうか確認する範囲のサイズが一致しているかどうかは、数式を入力する前に確認する習慣をつけましょう。

0や空白が複数列に含まれている場合の扱い

複数列にまたがるデータに0や空白が含まれている場合、それらをどう扱うかが平均値に大きく影響します。

0を除外して複数列の平均を求めたい場合の考え方各列のSUMIFSで0以外の合計を求め、0以外のCOUNTIFSで件数を求めてから割り算する

=(SUMIFS(B1:B10,A1:A10,“東京”,B1:B10,”<>0”)
+SUMIFS(C1:C10,A1:A10,“東京”,C1:C10,”<>0”))
/(COUNTIFS(A1:A10,“東京”,B1:B10,”<>0”)
+COUNTIFS(A1:A10,“東京”,C1:C10,”<>0”))

0や空白の扱いを明確にした上で数式を組み立てることが、正確な集計への第一歩です。

列が増えた場合に数式を効率よく修正する方法

集計対象の列数が増えるたびに数式を手作業で修正していると、管理が大変になります。列の増減が見込まれる場合は、あらかじめSUMIFSを使った集計列を別途設けておき、その列だけを参照する構成にすると管理が楽になります。

たとえば、各行の1月〜3月の合計を別列(E列など)に「=B1+C1+D1」のようにあらかじめ計算しておき、AVERAGEIFS関数ではE列だけを平均対象にする方法が実務ではよく使われます。

まとめ

この記事では、AVERAGEIFS関数で平均対象範囲を複数列に指定する方法について解説してきました。

AVERAGEIFS関数は標準では1つの範囲しか平均対象に指定できないため、複数列にまたがる平均はSUMIFSとCOUNTIFSを組み合わせる方法や、配列数式・SUMPRODUCT関数を活用する方法で対応します。

列数が少ない場合はSUMIFSの合計÷COUNTIFの件数という方法がシンプルでわかりやすく、列が増える場合はあらかじめ合計列を設けておく設計が管理しやすくなります。

複数列にまたがる集計はやや複雑になりますが、目的に合った方法を選ぶことでスッキリした数式を組めるようになります。ぜひ今回の内容を実際のエクセル作業に役立ててみてください。