『Excel VBA 表計算とプログラミング学習サイト』では、アフィリエイトプログラムを利用して商品を紹介しています。

【Excel】AVERAGEIF関数で男女別平均点を求めます

今回は英数国の試験で科目ごとの男女別平均点を求めて、さらに3科目の男女別平均点を求めてみようという記事です。簡単そうに見えて、範囲の参照の仕方がけっこう難しいです。それでは下の表をコピーしてセル B2 に貼りつけてください。

氏名 性別 英語 数学 国語
小塩 里緒 女 56 58 90
出縄 師章 男 42 81 81
薮内 鈴子 女 99 99 61
谷安 一光 男 68 71 92
橘高 昭子 女 94 91 30
新開 恒一 男 35 71 84
小熊 賢人 男 46 91 20
木野 瑞姫 女 47 75 81
道仙 栄市 男 84 78 86
勝井 むつみ 女 56 78 77

【Excel】AVERAGEIF 関数

それから次のようなシートを作ってみましょう。
 
Excel男女別平均シート用意
 
この次がちょっと難しいです。Excel の AVERAGEIF は

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

て書いて、[条件範囲] から [条件] に一致する行だけに絞って、[平均対象範囲] の平均値 を求める関数です。今作っているシートには D15 から F16 まで同じ数式を入力することになります。1つ1つ入れるのは大変だから、セル D15 に数式を入れて、残りのセルにコピーしますけど、縦にも横にも位置がずれていくので、参照範囲をうまく調整しなくてはいけません。とにかくセル D15 に

=AVERAGEIF($C$3:$C$12,$C14,D$3:D$12)

と入力してください。条件範囲 C3:C12 は完全に固定すればいいので、マウスでこの範囲を選んだあと F4 キーで絶対参照にします。2番目の引数に入るのは C15 あるいは C16 です。つまり列 C は固定されたまま行番号が動くので C の前に $ を添えます。最後の引数は列は動かしますが、行方向に動かれては困ります。なので数字の 3 と 12 の前に $ を添えて行を固定します。
 
セルにAVERAGEIF関数を記入

あとはこの数式をセル F16 までコピーしてください。
科目別男女別平均値が表示されます。
 
Excel平均値が計算される
 
残るは3科目の男女別平均値ですけど、これは簡単です。
AVERAGE関数を使って、セル G14 に

=AVERAGE(D15:F15)

と入力してセル D15 から F15 までのデータの平均値を求めます。
 
CellにAVERAGE関数を記入
 
セル G16 までコピーすればシートの完成です!
 
ワークシート完成

【VBA】WorksheetFunction.AverageIf

VBA の WorksheetFunction.AverageIf は、ワークシート関数の AVERAGEIF を呼び出します。

'[VBA] WorksheetFunction.AverageIfのサンプルコード

Sub SampleWsAverageif()

    Dim avg As Double

    Range("A1").Value = "X"
    Range("A2").Value = "Y"
    Range("A3").Value = "X"
    Range("A4").Value = "X"
    Range("A5").Value = "Y"

    Range("B1").Value = 20
    Range("B2").Value = 50
    Range("B3").Value = 30
    Range("B4").Value = 70
    Range("B5").Value = 60

    'A列の値が"X"の行のみ値を取得して平均値(20+30+70)/3を計算
    avg = WorksheetFunction.AverageIf(Range("A1:B5"), "X", Range("B1:B5"))

    Debug.Print avg

End Sub

'SampleWsAverageifの実行結果:40

コメント