- ベストアンサー
Excel VBAで、Averageの範囲を変数を使って記述したい。
VBA初心者です。 例えば、 n=1~26 n=1の時 Range(A1:Z1).Formula=("=average(A2:A5)") n=2の時 Range(B1:Z1).Formula=("=average(B2:B5)") n=3の時 Range(C1:Z1).Formula=("=average(C2:C5)") (以下、n=26まで続く) これを変数を使って、すっきり記述するにはどうすればよいのでしょうか?よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
n = 2 col = Chr(Asc("A") + n - 1) Range(col & "1:Z1").Formula = "=average($" & col & "2:$" & col & "5)" みたいな感じで良いかも
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 私には、何をしたいのか、コードからは読み取れませんが、分岐なのでしょうか? Sub TestSample1() Dim n As Integer n = InputBox("数字を入れてください") If n > 0 And n < 27 Then ActiveSheet.Cells(1, n).Resize(, 27 - n).FormulaLocal = "=Average(R[1]C:R[4]C)" End If End Sub
お礼
nの値をInputBoxなどで取得し、その値に応じてAverageの範囲を設定したいと思いました。質問が分かり難く、すみませんでした。おかげさまで、すっきりと記述することができました。ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
モデル例 Sub test01() For j = 1 To 3 d = ActiveSheet.Cells(9, j).End(xlUp).Row ' MsgBox d avg = WorksheetFunction.Average(Range(Cells(2, j), Cells(d, j))) Cells(10, j) = avg Next j End Sub 質問者の場合への修正。 For j = 1 To 3の3は26(列)に変える。 Cells(10, j) = avgの10は合計行の行番号に変える。 d = ActiveSheet.Cells(9, j).End(xlUp).Rowの9は合計行の直上の行番号に変える。
お礼
なにぶん初心者なもので、一読しただけでは理解できない箇所がありますので、ゆっくり調べてみたいと思います。ありがとうございました。
お礼
アドバイスを参考に記述したところ、目的とする結果を得ることができました。助かりました。ありがとうございました。