11/29/2016

Excel。AVERAGEIFS。年代別の平均年齢を算出したいけど、どうしたらいいでしょうか?


Excel。年代別の平均年齢を算出したいけど、どうしたらいいでしょうか?

<AVERAGEIFS関数とIFERROR関数>


なんでも、社員登録などの名簿で、年代別の平均年齢を算出したいけど、
ピボットテーブルを使っても、フィールドを作らないといけないし、かといって、
条件をアレコレ別の列に作って算出させようとしても、
なんか大変で、うまくいかないので、何かアイディアはありませんか?だそうでして、

確かに部署によっては、会社の将来を見越して、
どこの年代を中途で採用するか?なんてこともあるのでしょうね。

次のようなことをやりたいわけなんですね。

年代別ごとにその件数を数えるということは、
一の位を切り捨てれば、比較的簡単なのですが、
今回は、年代別の平均値を求める必要があるわけです。

けど、そもそも、年代別の平均値を算出したいだけということに着目してみましょう。

要するに、条件付きで平均値を算出できればいいわけです。

ポイントとなるのは、「Excelは、期間の算出が比較的苦手」ということなのです。

そこで、AVERAGEIFS関数を使ってみたいと思います。

AVERAGEIF関数でもいいように思いますが、AVERAGEIFS関数にするのには、
例えば、20歳代の場合、条件は20歳から29歳。

つまり、「20以上30未満」という条件になるわけです。

Excelには、Accessのような、between~andのようなものがありませんので、
20以上と30未満という2つの条件が発生します。

そのため、AVERAGEIF関数の条件が一つのものでは、
算出することが出来ないというわけです。

では、早速求めていきましょう。
F2をクリックして、AVERAGEIFS関数ダイアログボックスを表示しましょう。

平均対象範囲ですが、年齢のデータですから、$C$2:$C$21

条件範囲1は、$C$2:$C$21

条件1は、E2に10と入力されていますので、
10歳以上ということになりますので、">="&E2

">="は、ダブルコーテーションをつけないといけませんね。
そして、&を使って結合させます。
条件を">=E2"としてしまうと、文字になってしまいますので、注意が必要ですね。

条件範囲2は、$C$2:$C$21

条件2は、"<"&E2+10

これで、OKボタンをクリックしましょう。

なお、数式は、
=AVERAGEIFS($C$2:$C$21,$C$2:$C$21,">="&E2,$C$2:$C$21,"<"&E2+10)
オートフィルを使った数式をコピーしてみましょう。

10歳代と60歳代はデータがないので、#DIV/0!のエラーが表示されてしまっていますので、
ここは、IFERROR関数を使って、数式を修正していきましょう。

修正後の数式は、
=IFERROR(AVERAGEIFS($C$2:$C$21,$C$2:$C$21,">="&E2,$C$2:$C$21,"<"&E2+10),"")
修正したら、オートフィルで数式をコピーしておきましょう。

これで、完成しました。

一見、見た感じ、長い数式になってしまいましたが、
このようにAVERAGEIFS関数を使ってあげれば、
「ここからここまで」というデータの平均を算出することが出来ますよ。