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

如何通过工作表索引号实现Excel VBA多表指定单元格求和

Excel VBA 按工作表索引号求和(4-13工作表的R2C40单元格)

完全可以通过工作表索引号实现这个需求,之前的错误是写法不符合VBA语法规范,下面是两种可行的实现方式:

方法一:循环累加(更稳妥,支持边界检查)

Sub SumBySheetIndex()
    Dim total As Double
    Dim i As Integer
    
    total = 0
    ' 遍历索引号4到13的工作表
    For i = 4 To 13
        ' 避免索引超出当前工作簿的工作表总数
        If i <= ThisWorkbook.Sheets.Count Then
            ' Cells(行号, 列号)对应R2C40(第2行第40列,即AD2单元格)
            total = total + ThisWorkbook.Sheets(i).Cells(2, 40).Value
        End If
    Next i
    
    ' 将求和结果写入当前活动工作表的A1单元格(可自行修改目标位置)
    ActiveSheet.Range("A1").Value = total
End Sub

方法二:构建联合区域后求和

Sub SumBySheetIndex_V2()
    Dim sumRange As Range
    Dim i As Integer
    
    ' 初始化求和区域为第4个工作表的目标单元格
    Set sumRange = ThisWorkbook.Sheets(4).Cells(2, 40)
    
    ' 依次合并后续工作表的目标单元格
    For i = 5 To 13
        If i <= ThisWorkbook.Sheets.Count Then
            Set sumRange = Union(sumRange, ThisWorkbook.Sheets(i).Cells(2, 40))
        End If
    Next i
    
    ' 调用工作表函数求和并输出
    ActiveSheet.Range("A1").Value = WorksheetFunction.Sum(sumRange)
End Sub

之前错误的原因说明

  • 第一种错误:误将Sheets(4)当作工作表名称使用,比如写成Sum(Sheets("Sheets(4)").Cells(2,40)),这会让VBA去查找名为"Sheets(4)"的工作表,而非索引号为4的工作表。
  • 438错误:通常是因为引用单元格的方式错误,比如直接写Sheets(4).R2C40,VBA不支持这种直接的R1C1格式属性调用,必须通过Cells(2,40)或者Range("AD2")来引用单元格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 15:45:11