You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何编写正确VBA代码实现多工作表数据统计至Master Worksheet?

修正后的VBA代码及问题解析

原代码存在的问题

  1. 语法错误:
    • 单元格引用需用复数形式Cells,而非Cell
    • For循环缺少起始值,正确格式为For i = 1 To TotalNumberofWorksheets,无需末尾冒号
  2. 逻辑错误:两次赋值给同一个单元格,导致平均值被最小值覆盖,未按需求对应Master表的B、C列分别存储数据
  3. 方法调用错误:VBA中需通过WorksheetFunction调用统计函数,不能直接用Range对象的Average()/Min()方法

正确的VBA代码

Sub MasterWorksheet()
    Dim i As Integer
    Dim TotalNumberofWorksheets As Integer
    Dim masterSheet As Worksheet
    
    ' 初始化总工作表数(可根据实际数量调整)
    TotalNumberofWorksheets = 99
    ' 提前获取Master工作表对象,提升运行效率
    Set masterSheet = ActiveWorkbook.Worksheets("Master Worksheet")
    
    ' 遍历命名为1、2...的工作表
    For i = 1 To TotalNumberofWorksheets
        ' 将第i个工作表的B2:B11平均值写入Master表B列对应行
        masterSheet.Cells(i + 1, 2).Value = WorksheetFunction.Average(ActiveWorkbook.Worksheets(CStr(i)).Range("B2:B11"))
        ' 将第i个工作表的C2:C11最小值写入Master表C列对应行
        masterSheet.Cells(i + 1, 3).Value = WorksheetFunction.Min(ActiveWorkbook.Worksheets(CStr(i)).Range("C2:C11"))
    Next i
End Sub

代码说明

  • 提前获取masterSheet对象,减少重复查找工作表的资源消耗
  • 用CStr(i)将整数转为字符串,确保精准匹配名为"1"、"2"的工作表
  • 行号使用i+1,对应需求中B2/C2对应工作表1、B3/C3对应工作表2的规则
  • 通过WorksheetFunction调用统计函数,保证代码兼容性与稳定性

内容的提问来源于stack exchange,提问作者diabolik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 14:02:08