Georgeには、日付(列A)とそれらの日付に関連付けられた値(列B)を含むワークシートがあります。ワークシートには、過去数年間の値が含まれています。彼は、特定の年の特定の月のすべての値の平均を計算したいと考えています。たとえば、Georgeは2011年5月のすべての値の平均を計算したいと考えています。

この問題に取り組むには、いくつかの異なる方法があります。 1つの方法は、データに基づいてピボットテーブルを作成することです。 (ピボットテーブルは、大量のデータを集約および分析するのに最適です。)値フィールドを(デフォルトの合計ではなく)平均に簡単に設定し、[日付]列を必要に応じてグループ化できます。

ピボットテーブルを使用したくない場合は、ワークシートに追加できる数式がいくつもあります。たとえば、次の式はSUMPRODUCT関数を使用して平均を計算します。

=SUMPRODUCT((MONTH(A2:A1000)=5)(YEAR(A2:A1000)=2011)(B2:B1000)) / (SUMPRODUCT((MONTH(A2:A1000)=5)(YEAR(A2:A1000)=2011)1))

数式は、日付と値が行2から始まり(見出しを許可するため)、行1000を超えないことを前提としています。2011年5月のデータに日付がない場合、数式は#DIVを返します。 / 0!

エラー。

別のアプローチは、次のような配列数式を使用することです。

=AVERAGE(IF((MONTH(A2:A1000)=5)*(YEAR(A2:A1000)=2011),B2:B1000))

このアプローチはSUMPRODUCT数式よりも短いですが、数式を入力するときはCtrl + Shift + Enterを押したままにすることを忘れないでください。

目的の月と年のデータがない場合も、ゼロ除算エラーが発生します。

さらに別のアプローチは、Excelのデータベース機能の1つであるDAVERAGEを使用することです。あなたがする必要があるのはあなたが探しているものを定義する基準テーブルを設定することです。たとえば、列の見出しが日付(セルA1)や値(セルB1)などのオリジナルのものであるとします。

D1:E2など、別の場所に基準テーブルを設定できます。テーブルは次のようになります:

Date         Date >4/30/11     <6/1/11

基準テーブルは、[日付]列に2011年4月30日よりも大きい日付と2011年6月1日よりも小さい日付が含まれているものをDAVERAGEで使用することを示しています。式は次のとおりです。

=DAVERAGE(A1:B1000,"Value",D1:E2)

最初のパラメーターはデータベースを定義し、2番目のパラメーターは[値]列(列B)の情報を平均化することを示し、3番目のパラメーターはDAVERAGEに基準テーブルの場所を示します。

非常に簡単な方法の1つは、日付のフィルタリングを適用し、SUBTOTAL関数を使用することです。次の数式をセルに入力します:

=SUBTOTAL(101,B2:B1000)

データ範囲内のセルを選択し、オートフィルターをオンにします([データ]、[フィルター]、[オートフィルター]の順に選択します)。列Aの上部にあるフィルタリング矢印をクリックし、ドロップダウンリストから[カスタムフィルター]を選択します。 Excelに[カスタムオートフィルター]ダイアログボックスが表示されます。 (図1を参照)

image

図1. [カスタムオートフィルター]ダイアログボックス。

ダイアログボックスのコントロールを使用して、2011年4月30日より大きく2011年6月1日未満のレコードが必要であることを指定します。 [OK]をクリックすると、2011年5月以内のレコードのみが表示され、小計式に表示されているレコードの平均が表示されます。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(10670)は、Microsoft Excel 97、2000、2002、および2003に適用されます。

Excel(Excel 2007以降)のリボンインターフェイスに関するこのヒントのバージョンは、次の場所にあります: