【问题标题】:Average function in macro not returning value宏中的平均函数不返回值
【发布时间】:2018-04-13 10:01:12
【问题描述】:
Dim XXXX as string

XXXX = Sheets("Sheet1").Application.WorksheetFunction.Average(Range("J7:J607")).value
Sheets("Log").Cells(2, "Z").value = XXXX

End Function

请看上面的宏。我需要 J 列中可用值的平均值,并且需要将该平均值粘贴到“日志”表中。但是该值没有返回,而是将其保留为空白单元格。但是代码运行良好,没有出现任何错误。

请帮我解决这个问题。

【问题讨论】:

  • 为什么 XXXX 是一个字符串?

标签: vba excel average worksheet-function


【解决方案1】:

您正在尝试写入 Function 中的另一个单元格,然后我猜您是从工作表中调用它?

请改用Sub。当然,您不能从工作表中调用它。

试试这个

Private Sub Sample()
    Dim XXXX As String

    With Sheets("Sheet1")
        XXXX = Application.WorksheetFunction.Average(.Range("J7:J607"))
        Sheets("Log").Cells(2, "Z").Value = XXXX
    End With
End Sub

如果你想使用一个函数并从工作表中调用它,那么像这样使用它

Private Function GetAvg()
    GetAvg = Application.WorksheetFunction.Average(Sheets("Sheet1").Range("J7:J607"))
End Function

然后在单元格Z2 中输入这个

=GetAvg()

【讨论】:

    【解决方案2】:

    以下代码可以代替您当前的代码:

    Dim XXXX As String
    
    XXXX = Application.WorksheetFunction.Average(Range("J7:J607"))
    Sheets("Log").Cells(2, "Z").Value = XXXX
    

    【讨论】:

    • 是的,我发现了这一点,但只是假设用户将代码包装在一个函数中(我注意到很多人似乎都这样做..)而不是一个子。
    • 为什么不只是Sheets("Log").Cells(2, "Z").Value = Application.WorksheetFunction.Average(Range("J7:J607"))?强制单元格的格式为Text,如果它很重要的话。
    • @AJD,当然,如果其他任何东西都不需要该值,那么直接将其写入单元格就可以了。
    猜你喜欢
    • 1970-01-01
    • 2021-02-13
    • 2014-05-02
    • 2019-03-15
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 2021-12-22
    相关资源
    最近更新 更多