• ベストアンサー

連続データのセルの行数を一行ごとに+7する方法

A1=ROUND((AVERAGE(C1:C7))*5,2) これをオートフィルすると、C2:C8とセルの行数がひとつずつ増えていくのですが、これをC8:C14のように7つずつ増やしたいと考えています。 どうすればよいでしょうか。 もしくは、B列の数字が7行ごとに数字が1つずつ増えるようにしてあるので、B列の数字が1の時のA列の平均をC1にB列の数字が2の時にA列の平均をC2にみたいな式でも構いません。

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

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

こんばんは! 一例です。 =ROUND(AVERAGE(OFFSET(C$1,(ROW(A1)-1)*7,,7))*5,2) または =ROUND(AVERAGE(INDIRECT("C"&(ROW(A1)-1)*7+1&":C"&(ROW(A1)-1)*7+7))*5,2) という数式を入れオートフィルで下へコピーしてみてください。 ※ 数式としては前者の方が簡単かもしれませんね。m(_ _)m

tukutukuhosi
質問者

お礼

いつもありがとうございます。OFFSETはマクロでは使ったことあるんですが、数式でも使えるんですね!参考になります。

その他の回答 (2)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

回答がかぶったようなので、参考までに他の計算方法を提示します。 OFFSET関数を使うならC1:C7の範囲を7づつずらす以下の式のほうがわかりよいかもしれません。 =ROUND((AVERAGE(OFFSET($C$1:$C$7,(ROW(A1)-1)*7,0)))*5,2) またOFFSET関数やINDIRECT関数は揮発性関数なのでセルに入力くするごとに再計算が走りますので、シートの動きが重くなる可能性があります。 このような場合はINDEX関数を使って以下のような数式にすることもできます。 =ROUND((AVERAGE(INDEX(C:C,(ROW(A1)-1)*7+1):INDEX(C:C,ROW(A1)*7)))*5,2)

tukutukuhosi
質問者

お礼

ありがとうございます。様々な関数を示して頂き、大変助かりましたm(__)m

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

以下のような関数で集計対象の範囲を変更することができます。 =ROUND((AVERAGE(OFFSET($C$1,(ROW(A1)-1)*7,0,7,1)))*5,2) または =ROUND((AVERAGE(INDIRECT("C"&ROW(A1)*7-6&":C"&ROW(A1)*7)))*5,2)

関連するQ&A