Excel VBA中单元格的平均值

Excel VBA中单元格的平均值,excel,vba,Excel,Vba,VBA新手。试图创建一个宏,该宏将用另一列(C)的平均值填充一列(D)。我创建了一个变量nb\u rows,并从以下代码开始: 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 我犯了一个错误。我哪里做错了。例如,当前

VBA新手。试图创建一个宏,该宏将用另一列(C)的平均值填充一列(D)。我创建了一个变量
nb\u rows
,并从以下代码开始:

    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_行设置为27。

这似乎适合我。它将在D列的每一行中放置平均值(我不确定这是否是您的意图,但这是您的代码当前的结构)

需要注意的一些事项:

  • myRange C
    String
    更改为
    Range
  • 使用适当的程序来声明和设置范围(将Sheet1更改为您的工作表名称),设置
    MyRange C
  • Application.Average
    更改为
    Application.worksheetFunction.Average
    ,并在范围内传递(它接受
    range
    对象,而不是字符串)

如果需要,我可以提供更多的澄清。

这似乎对我很有效。它将在D列的每一行中放置平均值(我不确定这是否是您的意图,但这是您的代码当前的结构)

需要注意的一些事项:

  • myRange C
    String
    更改为
    Range
  • 使用适当的程序来声明和设置范围(将Sheet1更改为您的工作表名称),设置
    MyRange C
  • Application.Average
    更改为
    Application.worksheetFunction.Average
    ,并在范围内传递(它接受
    range
    对象,而不是字符串)

如果需要,我可以提供更多的说明。

不要使用
,只需执行
设置myRangeC=“C4:C”和nb_行
。此外,不能将范围设置为字符串。您必须
将MyRange C调暗为Range,因为Range
@dwirony仍产生错误错误错误是什么?nb_行的值是多少?
Set myrange C=Range(“C4:C”和nb_行)
使用
Dim myrange C As Range
,但您知道这会用相同的值填充D列中的所有单元格吗?不要使用
Let
,只需执行
Set myrange=“C4:C”和nb_行即可。此外,不能将范围设置为字符串。您必须
将MyRange C调暗为Range,因为Range
@dwirony仍产生错误错误错误是什么?nb_行的值是多少?
Set myrange C=Range(“C4:C”&nb_行)
with
Dim myrange As Range
,但您知道这将用相同的值填充D列中的所有单元格吗?^。或者
Set myRangeC=Application.Range(“C4:C”和nb_行)
同意您不需要工作表限定符。您可以使用
Application.Range
,甚至可以像我在下面做的那样使用
Range
。我是一个倾向于尽可能地限定我的对象以避免意外结果的人这或者
Set myRangeC=Application.Range(“C4:C”和nb_行)
同意您不需要工作表限定符。您可以使用
Application.Range
,甚至可以像我在下面做的那样使用
Range
。我是一个倾向于尽可能地限定我的对象以避免意外结果的人!
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