• ベストアンサー

エクセルについて

offset関数の事で質問させて下さい。 例えば、A列にある数値から移動平均を求めるためにoffset関数を使い日数をいろいろ変えていますが、3日移動平均、5日移動平均というように日にちを変えていくと3日移動平均の数値はそのままで5日目以降の数値が変わっていきます。 多分、期間を長くしていく場合に前の数値がゼロとなり表示されなくなれば良いと思うのですが、今使用している以下の数式にどう追加で数式を足していけば良いのでしょうか? =AVERAGE(OFFSET(A5,1-C$1,0):A5) よろしくお願いします。

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

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

B1に =IF($C$1="","",IF(ROW(B1)>=$C$1,AVERAGE(OFFSET(A1,0,0,-$C$1,1)),"")) として下向けにコピーして埋めてみます。

tokumaru2011
質問者

お礼

どうもありがとうございます。 上手く出来ました。 助かりました。

その他の回答 (2)

回答No.3

すみません 合計のみ計算していました。 C2セルに =SUMIF(A$2:A$21,E2,B$2:B$21)/COUNTIF(A$2:A$21,E2) を、入力しなおして下さい。 以下にコピーは、同じです。 E2セルは、必要数のみ下にコピーです。 D2セルの数字が、過去の日数指定になります。 なお、C2セルが、エラー表示になるのが否なら =IF(SUM(B$2:B$21)>0,SUMIF(A$2:A$21,E2,B$2:B$21)/COUNTIF(A$2:A$21,E2),"") にしてみてください。 ごめんなさい。

回答No.2

   A   B    C   D   E 1 過去日 移動距離 平均値 何日前 引数 2  下A  100   下C 5  下E 3  -6   90   250   4 >=-4 4  -5   80   180   3 >=-3 5  -4   70   120   2 >=-2 6  -3   60   70   1 >=-1 7  -2   50   30   0 >=-0 8  -1   40 9   0   30 式A =IF(B2>=1,IF(B3=0,0,IF(A3<0,A3-1,-1)),"") 式C =SUMIF(A$2:A$21,E2,B$2:B$21) 式E =">=-"&D2 勝手解釈ですが、 過去の指定日数分の平均を計算するとして書いてみました。 A列に何日前か?式Aにより入力されます C列にDで指定した日数前からの平均値が式Cにより入力されます E列に式Cに必要な引数がDにより入力されます 2行目の式A,式C,式Eを21行目までコピーすると 計算できると思います。

tokumaru2011
質問者

お礼

丁寧に説明して頂きありがとうございます。 参考させて頂き試してみます。

関連するQ&A