2017-07-31 5 views
0

VBAの新機能。列(D)を別の列(C)の平均値で埋めるマクロを作成しようとしています。私は、変数nb_rowsを作成し、このコードで開始している:私はエラーを取得していますVBA内の細胞の平均

Dim myRangeC As String 
    Let myRangeC = "C4:C" & nb_rows 

    For i = 4 To nb_rows 
    Range("D" & i).Value = Application.Average(myRangeC) 
    Next i 

。どこが間違ってしまったの?現在、nb_rowsは27に設定されています。

+1

'Let'は使用しないでください。Set myRangeC =" C4:C "&nb_rows'を実行してください。また、範囲を文字列に設定することもできません。 'Dim myRangeC As Range' – dwirony

+0

@dwironyはまだエラーを生成しました –

+1

何がエラーですか? nb_rowsの値は何ですか? – dwirony

答えて

2

これは私にとってはうまくいくようです。列Dのすべての行に平均を配置します(これがあなたの意図かどうかはわかりませんが、コードが現在どのように構造化されているかはわかりません)。 (自分のシート名にシート1を変更する)範囲を宣言して設定するための適切な手順を使用してRange

  • セットmyRangeCStringからmyRangeCを変更

    • Sub Test() 
      
           Dim nb_rows As String 
           Dim myRangeC As Range 
           Dim i As Long 
      
           nb_rows = 27 
      
           'Change Sheet1 to your sheet name 
           Set myRangeC = Worksheets("Sheet1").Range("C4:C" & nb_rows) 
      
           For i = 4 To nb_rows 
             Range("D" & i).Value = Application.WorksheetFunction.Average(myRangeC) 
           Next i 
      
      End Sub 
      

      には、いくつかの注意事項

    • Application.AverageApplication.WorksheetFuncion.Averageに変更され、範囲内で渡されました(文字列ではなくRangeオブジェクトを受け入れます)

    必要に応じてもっと明確に説明することができます。

  • +0

    これ。または 'Set myRangeC = Application.Range(" C4:C "&nb_rows)' – dwirony

    +0

    Workheets修飾子は必要ないと決めました。 'Application.Range'やさらに' Range'を使用することができます。私は予期しない結果を避けるためにできる限り私のオブジェクトを修飾する傾向がある誰かです! – Soulfire