• ベストアンサー

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まで続く) これを変数を使って、すっきり記述するにはどうすればよいのでしょうか?よろしくお願いします。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

n = 2 col = Chr(Asc("A") + n - 1) Range(col & "1:Z1").Formula = "=average($" & col & "2:$" & col & "5)" みたいな感じで良いかも

mumu001
質問者

お礼

アドバイスを参考に記述したところ、目的とする結果を得ることができました。助かりました。ありがとうございました。

その他の回答 (2)

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

こんにちは。 私には、何をしたいのか、コードからは読み取れませんが、分岐なのでしょうか? 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

mumu001
質問者

お礼

nの値をInputBoxなどで取得し、その値に応じてAverageの範囲を設定したいと思いました。質問が分かり難く、すみませんでした。おかげさまで、すっきりと記述することができました。ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

モデル例 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は合計行の直上の行番号に変える。

mumu001
質問者

お礼

なにぶん初心者なもので、一読しただけでは理解できない箇所がありますので、ゆっくり調べてみたいと思います。ありがとうございました。