- ベストアンサー
平均算出マクロ
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に求めるマクロを 作りたいのですがどうしたらいいでしょうか? 説明が下手で申し訳ありませんがお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
参考までに一例を示します。 標準モジュールに登録して実行してください。 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)
こんばんは。 数式を入れるだけなのに、なぜマクロが必要なのか良く分かりません。 たとえば、以下のような数式で出来るはずです。 =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 ただし、代入値そのもののエラー排除はされていません。