『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男女別平均シート用意
 
この次がちょっと難しいです。ExcelAVERAGEIF

=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

コメント