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

Excel VBA实现从First表到当前表指定区域动态跨表求和

问题原因及修正方案

错误原因

  • 未在外层包裹SUM聚合函数:多个区域引用直接用+号连接时,Excel会返回包含各区域所有值的数组,不会自动聚合为单个求和结果,必须嵌套SUM函数才能得到总和。
  • 引用语法不规范且冗余:你代码生成的区域引用存在单引号配对错误(比如'sheet2!缺少闭合单引号),且完全没必要逐个拼接每个工作表的引用,Excel原生支持起始工作表名:结束工作表名!单元格区域的连续跨表引用语法,写法更简洁也不容易出错。

修正方案

方案1:使用原生连续跨表引用(推荐)

该方案直接生成你要求的=SUM(First:当前表名!G36:G41)格式的公式,运行效率更高,公式更简洁。

Public Sub autoFormula()
    Dim i As Integer
    ' 遍历从第2个工作表到最后一个工作表
    For i = 2 To Worksheets.Count
        ' 生成连续跨表求和公式,表名含特殊字符时自动加单引号包裹
        Worksheets(i).Range("G44").Formula = "=SUM(First:'" & Worksheets(i).Name & "'!G36:G41)"
    Next
End Sub

方案2:保留原拼接逻辑的修正版

如果你确实需要逐个拼接每个工作表的引用(比如中间有需要排除的工作表的场景),可以修改为如下代码:

Public Sub autoFormula()
    Dim i As Integer, j As Integer
    Dim arr As Variant
    For i = 2 To Worksheets.Count
        ReDim arr(1 To i)
        For j = 1 To i
            ' 修复单引号配对错误
            arr(j) = "'" & Worksheets(j).Name & "'!G36:G41"
        Next
        ' 外层添加SUM函数包裹,用逗号分隔多个区域参数
        Worksheets(i).Range("G44").Formula = "=SUM(" & Join(arr, ",") & ")"
    Next
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:15:00