l
今回は、AVERAGEIF()という関数を使って「条件付きの平均値」を求める方法を紹介する。さらに、Excel 2019から新たに追加された関数IFS()の使い方も紹介する。いずれも「データ分析のための平均値」を求めるときに便利に活用できる関数となるので、この機会に使い方をマスターしておくとよいだろう。
条件付きで平均値を算出する関数AVERAGEIF
これまでの連載で「平均値を求めることがデータ分析の第1ステップである」と解説した。しかし、データをまとめた表の状況によっては、思い通りに平均値を求めることすら難しい場合もある。
たとえば、毎日の売上データが以下の図のような形式でまとめられていたとしよう。この場合、「曜日別の平均売上」を関数AVERAGE()で求めるのは非常に難しい。かといって、前回の連載のように表をカレンダー形式に組み直すのも面倒な作業となる。
このような場合に活用できるのが、「条件付き」で平均値を算出できる関数AVERAGEIF()となる。まずは、関数の書式を示しておこう。
=AVERAGEIF(条件にする範囲,条件,平均値を求める範囲)
「条件付き」で合計を算出する関数SUMIF()とよく似ているので、関数SUMIF()を使ったことがある方なら、すぐに使い方を覚えられるだろう。
それでは、先ほど示した例を使って具体的な操作手順を紹介していこう。ここでは「日曜日の平均売上」、「月曜日の平均売上」、「火曜日の平均売上」・・・を関数AVERAGEIF()で求めてみる。
まずは「曜日」の列を表に挿入する。「日、月、火、水・・・」の文字データは、オートフィルを利用すると簡単に自動入力できる。
あとは、関数AVERAGEIF()を使って「曜日別の平均売上」を求めていくだけ。今回の例ではC列の4~62行目に曜日データが入力されているので、「条件にする範囲」(第1引数)は「C4:C62」となる。
続いて、第2引数に「条件」を指定する。たとえば「日」(日曜日)を条件にする場合は、その文字をダブルクォーテーションで囲って、"日"と記述すればよい。
最後に「平均値を求める範囲」を指定する。今回の例では、売上データが入力されている「D4:D62」が第3引数となる。
「カッコ閉じ」を入力してから「Enter」キーを押すと、条件に合致するデータだけを対象にした平均値が表示される。つまり、「C列が"日"の売上金額」だけを対象に平均値が算出されることになる。
同様の手順を繰り返して、月曜日、火曜日、水曜日、・・・の平均値を求めていくと、「曜日別の平均売上」を求めることができる。
このとき、オートフィルを使って関数AVERAGEIF()をコピーすると、以下のようなミスが生じることに注意しなければならない。オートフィルを使うと、引数のセル参照が自動修正されながら関数がコピーされるため、セル範囲が1行ずつズレていく問題が発生する。
このような場合は、以下の図のように引数を「絶対参照」で指定しておくと、引数のセル範囲を変えることなく、関数AVERAGEIF()をコピーできるようになる。絶対参照を使うときは、列番号や行番号の前に「$」(ドル)の記号を付けてセル範囲を指定すればよい。
関数をコピーできたら「条件」となる第2引数を、"月"、"火"、"水"、・・・に変更していく。これで「曜日別の平均売上」を求めることができる。
このように、「曜日」の列を作成してから関数AVERAGEIF()を利用すると、日付順に並べられたデータであっても「曜日別の平均値」を求めることが可能となる。関数AVERAGEIF()は色々な場面に応用できるので、時間があるときに研究しておくとよいだろう。
関数IFS()を使った分類項目の作成
平均値に関連する応用例を、もう一つ紹介しておこう。たとえば、第2回の連載で紹介したように、「平日」と「休日」に分けて「売上の平均値」を求めたい場合はどうすればよいだろうか?
「日、月、火、水、・・・」といったデータを「平日」と「休日」に分類するには複数条件の場合分けが必要になり、それなりに手間のかかる作業となる。このような場合に活用できるのが関数IFS()である。
関数IFS()はExcel 2019から新たに採用された関数で、「複数の条件を列記できる関数IF()」のようなもの考えられる。Excel 2016でも利用可能な関数ではあるが、ビルド番号によっては未対応のExcel 2016もあるので、基本的にはExcel 2019もしくはOffice 365のExcelでのみ利用できる関数と考えておこう。
関数IFS()の書式は以下のとおりで、「条件」と「処理」を何組でも列記できるのが特徴となる。
=IFS(条件1,条件1の処理,条件2,条件2の処理,条件3,条件3の処理,・・・)
複数の条件を指定した場合分けを手軽に行えるため、IF()を入れ子にしたり、ORやANDを利用したりする必要がないのが大きなメリットといえるだろう。
それでは「平日」と「休日」に分けて平均値を算出するときの操作手順を解説していこう。まずはデータを「平日」と「休日」に分類するための列を挿入する。
続いて、関数IFS()を使って「平日」または「休日」のデータを自動入力していく。今回の例では、
(条件1)曜日が「土」の場合は「休日」
(条件2)曜日が「日」の場合は「休日」
(条件3)それ以外の場合は「平日」
という処理を関数IFS()で行えばよい。これを書式に従って記述すると以下の図のようになる。「それ以外の場合は・・・」の条件を指定するときは、条件にTRUEと記述すればよい。
上図に示した02/01は「金」曜日なので「それ以外の場合」に合致する。よって、関数IFS()により「平日」の文字が自動入力されることになる。
この関数IFS()をオートフィルでコピーしていくと、各日付の分類(平日/休日)を簡単に自動入力することができる。
あとは、関数AVERAGEIF()を使って平均値を算出していくだけ。この考え方は、先ほど紹介した手順と基本的に同じだ。以下のように引数を指定すればよい。
(第1引数)・・・・・「条件にする範囲」は「D4:D62」($D$4:$D$62)
(第2引数)・・・・・「条件」は"平日"(または"休日")
(第3引数)・・・・・「平均値を求める範囲」は「E4:E62」($E$4:$E$62)
このように、関数IFS()を使って分類用のデータを作成すると、さまざまな分類について平均値を算出することが可能となる。曜日が「祝」の場合は「休日」といった条件を追加して、祝祭日を「休日」に分類して平均値を求めることも可能だ。工夫次第で幅広く応用できるので、最新版のExcelを使っている方は、せっかくの新機能を上手に活用していこう。
なお、Excelのバージョンが古く、関数IFS()が使えない場合は、以下のように記述すると同様の処理を実現できる。
=IF(OR(C4="土",C4="日"),"休日","平日")
OR()は「または」で条件分岐を行う関数で、上記のように記述した場合、
・C4セルが「土」または「日」の場合は「休日」
・それ以外の場合は「平日」
という処理が行われる。古いバージョンのExcelでも使える方法として、こちらも併せて覚えておくと役に立つだろう。