excel - 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
解决方案
修改以下内容并尝试:
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"))
推荐阅读
- vb.net - 在 vb.net 中单击按钮打印时,如何从表单中的数据库访问中提取数据并在另一个表单上显示为收据
- c# - 解析Json递归的方法
- python - 线性数据的正则多项式回归 - 仅惩罚 2 次系数
- python - 如何将外部 NLP 技术集成到 Dialogflow?
- javascript - 浏览器的音频记录或麦克风对按钮单击而不是页面加载的权限
- docker - 如何通过 dotnet sdk 将 .dcproj 添加到解决方案中
- node.js - 使用 $graphLookup 的 Mongo 分层查询能够处理三个级别但需要多个级别
- react-native - 反应本机 axios 调用抛出 403 但邮递员正确输出数据
- python - 在numpy数组中按值选择性删除
- sequence - 使用正数和负数重复模 -1 到 1 的数字