• ベストアンサー

エクセルで一定期間毎の平均値の算出式について

A列に日付、B列にあるラインで製造された部材の重量が入力されているとします。 この時、ある一定期間に製造された部材の重量の平均値を返すには、どのような数式を使えばよいでしょうか? またこの一定期間というのが、少し厄介で、月毎ではなく、月の途中から途中(例えば、2/10~3/9、3/10~4/9というような感じ)の場合になりますが、このような時、どのような数式になるか、お教え頂きたく、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 一例です。 ↓の画像でF2セルに =IF(COUNTBLANK(D2:E2),"",AVERAGE(IF($A$1:$A$1000>=D2,IF($A$1:$A$1000<=E2,$B$1:$B$1000)))) これは配列数式になってしまいますので、Shift+Ctrl+Enterで確定! この画面からコピー&ペーストする場合は F2セルに貼り付け後、数式バー内で一度クリック! 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 これをオートフィルで下へコピーすると 画像のような感じになります。 ※ ↓の画像は当方使用のExcel2003での一例です。 配列数式の場合は極端にデータ量が多い場合はオススメできないのですが、1000行程度であれば問題ないと思います。 ※ 当然No.1さんの回答にあるようにExcel2007以降であればAVERAGEIFS関数が利用できますし、 データ量が多い場合はNo.1さんの後半の数式をオススメします。 失礼しました。m(_ _)m

その他の回答 (2)

  • popuplt
  • ベストアンサー率38% (31/81)
回答No.3

tom04さん掲載の表を利用させていただきまして別案を・・・ 案1 [F2]=AVERAGE(INDEX(B:B,MATCH(D2,A:A,0)):INDEX(B:B,MATCH(E2,A:A,0))) 案2 [F3]=AVERAGE(OFFSET(B2:B2,MATCH(D3,A:A,0)-2,0,MATCH(E3,A:A,0)-MATCH(D3,A:A,0)+1)) エラー処理無し。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

ご利用のエクセルのバージョンは幾つですか。 C1セルに開始の日付 たとえば 2012/2/10 D1セルに終了の日付 たとえば 2012/3/9 のように書いておくとすると 推奨:Excel2007以降を使っているなら =AVERAGEIFS(B:B,A:A,">="&C1,A:A,"<="&D1) のように計算できます。 全バージョン共通で,求める平均値は「期間中の合計」÷「期間のデータ件数」でごく簡単に計算できるのですから =(SUMIF(A:A,">="&C1,B:B)-SUMIF(A:A,">"&D1,B:B))/(COUNTIF(A:A,">="&C1)-COUNTIF(A:A,">"&D1)) で計算できます。

関連するQ&A