- ベストアンサー
エクセルについて
offset関数の事で質問させて下さい。 例えば、A列にある数値から移動平均を求めるためにoffset関数を使い日数をいろいろ変えていますが、3日移動平均、5日移動平均というように日にちを変えていくと3日移動平均の数値はそのままで5日目以降の数値が変わっていきます。 多分、期間を長くしていく場合に前の数値がゼロとなり表示されなくなれば良いと思うのですが、今使用している以下の数式にどう追加で数式を足していけば良いのでしょうか? =AVERAGE(OFFSET(A5,1-C$1,0):A5) よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
B1に =IF($C$1="","",IF(ROW(B1)>=$C$1,AVERAGE(OFFSET(A1,0,0,-$C$1,1)),"")) として下向けにコピーして埋めてみます。
その他の回答 (2)
- HRI-Sankou
- ベストアンサー率32% (64/199)
すみません 合計のみ計算していました。 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),"") にしてみてください。 ごめんなさい。
- HRI-Sankou
- ベストアンサー率32% (64/199)
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行目までコピーすると 計算できると思います。
お礼
丁寧に説明して頂きありがとうございます。 参考させて頂き試してみます。
お礼
どうもありがとうございます。 上手く出来ました。 助かりました。