『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

コメント

  1. あとりえこばと より:

    【AI解説】ExcelのAVERAGEIF関数の応用

    AVERAGEIF関数は、特定の条件に合致するセルの値の平均を計算するのに使用されるExcelの関数です。以下にAVERAGEIF関数の高度な応用例をいくつか示します。
     
    複数条件の組み合わせ: AVERAGEIF関数は1つの条件を評価するためのものですが、複数の条件を組み合わせたい場合があります。この場合、通常のAVERAGEIF関数を複数回組み合わせることで対応できます。例えば、特定の部門と特定の役職を持つ従業員の給与の平均を求めることができます。

    条件付き曜日ごとの平均: 曜日に基づいて特定の条件下での平均を求めるケースもあります。例えば、特定の製品の販売データがある場合、平日と週末での売上平均を求めたり、特定の曜日ごとの平均売上を計算したりすることができます。

    数値の範囲に基づく条件付き平均: AVERAGEIF関数を使用して、特定の範囲内にある数値を条件として平均を計算することもできます。例えば、特定の数値範囲内にある商品の価格の平均を求める場合などです。

    条件付き重み付き平均: 条件付きで値を平均する際に、個々のデータに重みを付けて平均を計算したい場合があります。例えば、特定の商品の売上データがあり、それぞれの商品の売上数量を重みとして平均価格を求める場合です。

    条件付き平均の中央値または中央値近似値の計算: AVERAGEIF関数は平均を計算するためのものですが、条件下での中央値や中央値近似値を求める場合もあります。このような場合、複雑な式を使用して中央値を計算する方法が考えられます。

    日付範囲に基づく条件付き平均: 日付に基づいて条件を設定し、該当する日付範囲内での平均を求めることもあります。例えば、特定のプロジェクトの作業時間データがある場合、特定の期間内での平均作業時間を計算することができます。
     
    これらの高度な応用例を通じて、AVERAGEIF関数を柔軟に使用してデータの平均を計算する方法について理解を深めることができます。