• ベストアンサー

平均算出マクロ

A1とC1とE1に数値が入力されていG列にデーターが入っています。 例えばA1に3、C1に2 E1に5が入力されている場合 A1+C1=5なのでG5から E1の値5に1を足した6個の値 G5~G10の平均値をH10に求め A1に7、C1に5 E1に2が入力されている場合 A1+C1=12なのでG12から E1の値2に1を足した3個の値 G12~G14の平均値をH14に求めるマクロを 作りたいのですがどうしたらいいでしょうか? 説明が下手で申し訳ありませんがお願いいたします。  

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

  • ベストアンサー
  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.1

参考までに一例を示します。 標準モジュールに登録して実行してください。 Sub test()  Dim Start_Row As Long  Dim Data_Num As Long  Dim Data_Sum As Double  Dim Data_Ave As Double  Start_Row = Cells(1, "A").Value + Cells(1, "C").Value  Data_Num = Cells(1, "E").Value + 1  Data_Sum = 0  For m = Start_Row To Start_Row + Data_Num - 1   Data_Sum = Data_Sum + Cells(m, "G")  Next m  Data_Ave = Data_Sum / Data_Num  Cells(Start_Row + Data_Num - 1, "H").Value = Data_Ave End Sub

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 数式を入れるだけなのに、なぜマクロが必要なのか良く分かりません。 たとえば、以下のような数式で出来るはずです。 =AVERAGE(OFFSET(INDIRECT("G" & A1+C1),0,,E1+1)) それをマクロに移植するだけでよいのなら、 Sub Test1() Dim i As Long Dim Ret As Variant  i = Range("A1").Value + Range("C1").Value  Ret = Application.Average(Range("G" & i).Resize(Range("E1").Value + 1))  If Not IsError(Ret) Then    Range("H14").Value = Ret  End If End Sub ただし、代入値そのもののエラー排除はされていません。

関連するQ&A