• ベストアンサー

Excel:特定範囲内の平均値の出し方

Excel2003です。 sheet1のA列にxxxx/yy/zzの形式で年月日、B列に数値があります。 C1セルにB列の最新年月日からさかのぼって過去6ヶ月間の平均値を出したいのですが、どのようにすればよいでしょうか? よろしくお願いいたします。

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

  • ベストアンサー
noname#176215
noname#176215
回答No.6

#1の者です。補足に合わせて考えるなら =AVERAGE(OFFSET(B$1,MATCH(MAX(B:B)+1,B:B)-1,,-MIN(6,COUNT(B:B)))) B列に数値が全く入力されていなかった時にエラーが出ますから それ用 のエラー対策は別途行って下さい。 一応 最初の質問に従って計算しておきます。 ■C1セル:最新年月日 =MAX(A:A) ■C2セル:6ヶ月前の1日 =DATE(YEAR(C1),MONTH(C1)-5,1) ■C3セル:6ヶ月平均 =SUMIF(A:A,">="&C2,B:B)/COUNTIF(A:A,">="&C2)

Youyou
質問者

お礼

ありがとうございます。 ご教示のおかげで無事解決できました。 また、わからないことがあったらよろしくお願いいたします。

その他の回答 (5)

  • neconama
  • ベストアンサー率26% (146/541)
回答No.5

データベース関数のDAVERAGEを使う手もありますね。

Youyou
質問者

補足

ありがとうございます。 この関数の具体的な使い方がわかりません。 Excelのヘルプを何度も読み返しても理解できません。 よろしければ教えていただけませんか?よろしくお願いいたします。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.4

ちょっと長くなるが、これで。 A列に日付、昇順のこと。 B列にデータ C列に下記式。 C列に同じ行のA列の日付から6ヶ月さかのぼった日付内のB列の平均をだしている。 下の例は2行目からデータが入っているとしたとき、278行目から6ヶ月前までの平均を出している。C列で、フィルすれば他の行もでる。 ただし、6ヶ月前に足りないと、2行目までの平均になるから注意。 =AVERAGE(INDIRECT("B"&(ROW()-(MATCH(A278,A$2:A278,1)-MATCH(EDATE(A278,-6),A$2:A278,1))+1)):B278)

Youyou
質問者

お礼

ありがとうございます。 参考にさせていただきます。

  • isizii
  • ベストアンサー率25% (3/12)
回答No.3

(1) 平均値を表示させたいセル(C1)を選択 (2) ツールバーの「Σ▼」の▼をクリック (3) 表示された選択肢から「平均」を選択 (4) 特定範囲(6か月のデータ)を指定 (5) 「Enter」キーで確定   (くれぐれもマウスでクリックしないよう)

Youyou
質問者

お礼

ありがとうございます。 これは簡単でいいですね。参考にさせていただきます。 本当、勉強になります。

  • higekuman
  • ベストアンサー率19% (195/979)
回答No.2

質問者様は、どのような工夫をしてみたのでしょうか? 最新年月日は、MAX関数を使って求められます。 D列に、最新日から過去6ヶ月以内だったら1、そうじゃなかったら0になる数式を書きます。E列に、D列が1だったらB列、D列が0だったら0になる数式を書きます。B列×D列でもいいです。 D列の合計をE列の合計で割ると、過去6ヶ月の平均が求められます。 たぶん、この方法が、もっともスマートじゃないやり方だと思います。 もっとスマートな方法はいくらでもあります。 SUMPRODUCT関数を使えば、D列やE列の作業列を使わなくても、過去6ヶ月の平均を求められます。 でも、みっともなくても、まずは、自分が知っている知識を駆使することが大事だと思います。 それができた上で、もっとスマートな方法を探すべきです。 自分が何をしてみたのかも書かないで、質問だけするのは、課題の丸投げと取られてしまいますよ。

noname#176215
noname#176215
回答No.1

最新「年月日」からさかのぼると おっしゃいますが「過去6ヶ月」は どのように判断しますか? 「2008/5/31」が最新の年月日だったら 過去 6ヶ月は「何月何日から 何月何日まで」ですか? 「何月から何月」ではなく? 具体的に説明願います。

Youyou
質問者

補足

ありがとうございます。お返事が遅くなり申し訳ございません。 質問の仕方が不充分でした。 実はB列のデータは毎月1回限りのデータでして、過去6ヶ月とはB列の最終行から6行上まで、ということになります。 毎月1回何らかの数値をB列に入力し、その年月日をA列に入力の上、上書き保存をしていますので、常に最終行が最新の年月日と最新のデータになります。 従いまして、B列の最終行から5行上までの6行が常に過去6ヶ月分のデータになりますので、本来の質問の仕方は、 ━━━ B列に毎月1回何らかの数値を入れていきます。 このとき、他の列のとあるセル(ここでは「C1セル」とします)にB列の最終行からさかのぼって5行上までの計6列の平均値を表示させたいのですが、どのようにすればよいでしょうか? ━━━ とすべきでした。 大変失礼いたしました。