Menu

AVERAGEIF・AVERAGEIFS関数の使い方: 条件付きで平均を出す

=AVERAGEIF(A2:A7,"North",C2:C7)は、A列がNorthの行についてC2:C7の値の平均を出します。複数条件のAVERAGEIFS、0を除いた平均、#DIV/0!の直し方、MAXIFSとMINIFSも学びます。

このページのシートはすべて実際に動きます。数値や数式を変えると再計算されます。

=AVERAGEIF(A2:A7,"North",C2:C7)は、A列がNorthの行について、C2:C7の売上の平均を出します。SUMIFと同じように動きますが、合計を一致した行の数で割る点が違います。

条件付きの平均
F2
ABCDEF
1RegionProductSalesConditionAverage
2NorthApple120North90
3SouthPear45North, Apple80
4NorthPear110Over 50120
5EastApple55
6SouthApple195
7NorthApple40
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

F2はNorthの3行、120、110、40を平均して90を表示します。F3はNorthとAppleの2つの条件が必要なのでAVERAGEIFSを使います:(120 + 40) / 2 = 80。F4には平均する範囲が別にないので、一致した売上そのものを平均します。

AVERAGEIF関数とAVERAGEIFS関数の構文

=AVERAGEIF(range, criteria, [average_range])
=AVERAGEIFS(average_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)

引数の順番には、SUMIFとSUMIFSと同じ落とし穴があります。AVERAGEIFは平均する範囲を最後に置き(省略もできます)、AVERAGEIFSは最初に置きます。条件はどちらも同じ書き方です:"North"、">50"、"<>0"、"*apple*"、または演算子をセルにつないだ">"&F5。平均する範囲の空のセルと文字列は飛ばされます。

0を除いて平均する

AVERAGEは0を値として数えるので、欠席して0点の生徒が2人いるとクラスの平均が下がります。空のセルは違い、AVERAGEはそれを飛ばします。=AVERAGEIF(B2:B7,"<>0")は0も飛ばします。

0を除いた平均
E3
ABCDE
1StudentScoreMethodResult
2Ana80AVERAGE48
3Ben0Ignore zeros80
4Cara90Count of zeros2
5DanCount of numbers5
6Eva70
7Finn0
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

AVERAGEは240を5で割り、48を表示します。Danの空のセルは除かれますが、2つの0は数えられるからです。"<>0"を指定したAVERAGEIFは240を3で割り、80を表示します。B5に60を入力すると両方が変わり、B5に0を入力するとAVERAGEだけが動きます。0とマイナスの数値も除くには">0"を使います。

AVERAGEIFが#DIV/0!を返す理由

何も一致しないと、AVERAGEIFは割る数がなく#DIV/0!を返します。IFERRORで囲めば、代わりにダッシュ記号、メッセージ、空のセルを表示できます。

一致なしの場合と、MAXIFSとMINIFS
F2
ABCDEF
1RegionProductSalesFormulaResult
2NorthApple120West average#DIV/0!
3SouthPear45With IFERRORNo sales
4NorthPear110North max120
5EastApple55North min40
6SouthApple195Apple max195
7NorthApple40
#DIV/0! 0 または空のセルで割っています。

Westの行はないので、F2は#DIV/0!を、F3はメッセージを表示します。A3をWestに変えると、どちらも45を表示します。

MAXIFS関数とMINIFS関数

上のシートのF4からF6は、条件付きで最大値と最小値を求めています。AVERAGEIFSと同じ順番で、探す範囲が最初です。=MAXIFS(C2:C7,A2:A7,"North")は120を、=MINIFS(C2:C7,A2:A7,"North")は40を返します。AVERAGEIFと違い、何も一致しないときはエラーではなく0を返します。

MAXIFSとMINIFSにはExcel 2019以降かMicrosoft 365が必要です。Excel 2016以前では=MAX(IF(A2:A7="North",C2:C7))で同じことができます。これらのバージョンではCtrl+Shift+Enter(MacではCmd+Shift+Enter)で入力してください。

練習: 2つの条件で平均する

やってみよう: 欠席を除いたクラスの平均
F2
ABCDEF
1StudentClassScoreConditionAverage
2AnaA80Class A, no zeros
3BenB75
4CaraA0
5DanB60
6EvaA90
7FinnB0
8GusA70
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

やってみよう: クラスAの点数を、0(欠席した生徒)を除いて平均してください。数式はF2に書きます。

平均の平均: よくある間違い

大きさの違うグループの平均をさらに平均すると、全体の平均が間違います。Northは3行、Southは2行なので、2つの平均の平均では、Southの各行が本来より大きな重みで数えられます。

平均の平均
E4
ABCDE
1RegionSalesFormulaResult
2North120North90
3South45South120
4North110Average of the two105
5South195All rows102
6North40
セルをクリックすると数式が見えます。数値や数式を変えると、シートが再計算されます。

E4は105を、E5は5行の本当の平均102を表示します。グループの大きさが違うときは、1つのAVERAGEIFSで行そのものを平均するか、SUMIFSを同じ条件のCOUNTIFSで割ります:

=SUMIFS(B2:B6,A2:A6,"North")/COUNTIFS(A2:A6,"North")

単位数や数量で重みを付けた点数は、また別の計算です。それは加重平均です。

よくある質問

AVERAGEIFとAVERAGEIFSの違いは何ですか?

AVERAGEIFは条件が1つで、平均する範囲を最後に置きます:=AVERAGEIF(A2:A7,"North",C2:C7)。AVERAGEIFSは複数の条件を受け取り、平均する範囲を最初に置きます:=AVERAGEIFS(C2:C7,A2:A7,"North",B2:B7,"Apple")。

Excelで0を除いて平均するには?

=AVERAGEIF(B2:B7,"<>0")を使います。0でないセルだけを平均します。空のセルはAVERAGEやAVERAGEIFがもともと除くので、条件が必要なのは本当の0だけです。

AVERAGEIFが#DIV/0!を返すのはなぜですか?

条件に一致したセルがないので、Excelが0の合計を0の件数で割っているからです。別のものを表示するには囲みます:=IFERROR(AVERAGEIF(A2:A7,"West",C2:C7),"No data")。

条件付きで最大値を求めるには?

MAXIFSを使い、探す範囲を最初に置きます。=MAXIFS(C2:C7,A2:A7,"North")はNorthの最大値を返します。最小値はMINIFSで同じように求めます。どちらもExcel 2019以降かMicrosoft 365が必要です。

Coddyのプログラミング言語のイラスト

Coddyでコードを学ぼう

始める