首页 > 解决方案 > VBA - 在 Sheets.Range 中使用平均函数

问题描述

我已经尝试搜索几个不同的线程,但无法获得解决方案。

我的宏会将数据从一张纸传输到另一张纸。我需要使用该AVERAGE函数来获取范围的平均值(在另一张纸上)

我收到一个RUN TIME ERROR 438错误,不知道为什么。我尝试使用Application.WorksheetFunction,但这不具有正确的结果,并且适用于该MAX功能,但不适用于AVERAGE. 我看到了一些涉及创建循环和变量的解决方案,但我认为应该有一个简单的解决方案。

下面的代码:

Option Explicit            

Sub Step8CopytoLean()
    Dim wblean As Workbook
    Dim wbmaster As Workbook

    Set wblean = Workbooks("SLA Reporting Lean.xlsx")
    Set wbmaster = Workbooks("SLA Reporting MasterFile.xlsx")

    Workbooks("Lean.xlsx").Activate
    Worksheets("Data").Delete

    Workbooks("MasterFile.xlsx").Activate
    Worksheets("Data").Copy After:=Workbooks("Lean.xlsx").Sheets("Summary")

    Workbooks("Lean.xlsx").Sheets("Summary").Activate

    wblean.Sheets("Summary").Range("E4").Value = wbmaster.Sheets("Summary").Range("K20") 
    wblean.Sheets("Summary").Range("F4").Value = wbmaster.Sheets("Summary").Range("M20") 
    wblean.Sheets("Summary").Range("E5:E6").Value = wbmaster.Sheets("Summary").Average(Range("K9:K11")) 'line with error
    wblean.Sheets("Summary").Range("F5").Value = wbmaster.Sheets("Summary").Max(Range("M8:M11"))  'line with error

标签: excelvbafunctionrangeaverage

解决方案


修改以下内容并尝试:

Application.WorksheetFunction.Average(ThisWorkbook.Worksheets("Sheet1").Range("A1:A10"))

像这样的东西:

wblean.Sheets("Summary").Range("E5:E6").Value = Application.WorksheetFunction.Average(wbmaster.Worksheets("Summary").Range("K9:K11"))
wblean.Sheets("Summary").Range("F5").Value = Application.WorksheetFunction.Max(wbmaster.Worksheets("Summary").Range("M8:M11"))

推荐阅读