• 締切済み

EXCEL 平均

約6万点の時系列のデータがあります。 これを1/10の6千点のデータにしグラフ表示したいと考えています。 つまり10点分のデータを平均し1つのデータに置き換える。 A1-A10 の平均を B1 にし、A11-A20 の平均を B2 にする。・・・ といった具合です。 やはりプログラム作成が早道なのでしょうか?

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

ユーザー関数を作れば Function avg10(a) avg10 = WorksheetFunction.Average(Range(Cells((a.Row - 1) * 10 + 1, "A"), Cells(a.Row * 10, "A"))) End Function でB1に=avg10(B1)と入れてB2以下にこの式を複写します。 ーー VBAでも同じでしょう。 最下行を捉え、10分に1+1回For Nextで繰り返せばよい。 ーー 時系列データとのことだが、機械的に10(行)個データから平均を 出してよいのかな。同じ日分の平均を出すとか必要では>

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.3

>A1-A10 の平均を B1 にし、A11-A20 の平均を B2 にする B1=AVERAGE(OFFSET($A$1,(ROW(A1)-1)*10,,10)) ★下にコピー

noname#95859
noname#95859
回答No.2

仮に時系列のデータを次のように仮定します。 日時   値 2007/02/10 10:00 100 2007/02/10 11:00 110 1日を単位に考えれば、それだけで1/24に圧縮できます。 方法は、1列追加します(=int(日時) でOKです) 日    日時 値 2007/02/10 2007/02/10 10:00  100 2007/02/10 2007/02/10 11:00 100 このように、作ったデータにおいて、PIVOTを使います。 行に新たに作成した「日」データのところに「値」 方法は、平均を選びます。これで、目標は達成されます。 仮に、時系列が日であった場合には、 例  2007/02/01 2007/02/02 2007/02/03 2007/02/04 1列追加する列を次のようにします =INT(A1/10)*10 これは、下記のようになります。 2007/2/1 --> 2007/1/28 2007/2/2 --> 2007/1/28 2007/2/3 --> 2007/1/28 2007/2/4 --> 2007/1/28 2007/2/5 --> 2007/1/28 2007/2/6 --> 2007/1/28 2007/2/7 --> 2007/2/7 2007/2/8 --> 2007/2/7 2007/2/9 --> 2007/2/7 2007/2/10  --> 2007/2/7 2007/2/11  --> 2007/2/7 2007/2/12  --> 2007/2/7 2007/2/13 --> 2007/2/7 2007/2/14  --> 2007/2/7 2007/2/15  --> 2007/2/7 2007/2/16 --> 2007/2/7 2007/2/17 --> 2007/2/17 2007/2/18  --> 2007/2/17 2007/2/19  --> 2007/2/17 2007/2/20  --> 2007/2/17 2007/2/21  --> 2007/2/17 2007/2/22  --> 2007/2/17 2007/2/23  --> 2007/2/17 2007/2/24  --> 2007/2/17 2007/2/25  --> 2007/2/17 2007/2/26  --> 2007/2/17 これに、対し、前述と同じ、PIVOTを適用します。

回答No.1

B1 が A1~A10 B2 が A11~A20 B3 が A21~A30 と決まっているのであれば・・ =AVERAGE(INDIRECT("A"&ROW()*10-9&":A"&ROW()*10)) ではいかがでしょう。 ROW()は行数を出す関数です。 1行目であれば、ROW()*10-9 は 1 ROW()*10は10 2行目では ROW()*10-9は 20 ROW()*10は20 に変換されます。