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

Excel主表单个公式自动汇总新增工作表同单元格数据

自动汇总多工作表同位置单元格的解决方案

方法1:Excel 365/2021 动态数组方案(推荐)

如果使用的是Excel 365或2021版本,直接用动态数组公式实现自动汇总,无需手动调整:
假设主表名为总计表,需要汇总的目标单元格为B2,在主表的总计单元格输入:

=SUM(INDIRECT("'"&FILTER(GET.WORKBOOK(1),NOT(LEFT(GET.WORKBOOK(1),LEN("'总计表'!"))="'总计表'!"))&"'!B2"))
  • GET.WORKBOOK(1):返回当前工作簿所有工作表的完整引用(含路径)
  • FILTER:剔除主表的引用,只保留其他工作表
  • INDIRECT:将文本格式的工作表引用转换为可计算的单元格引用
  • SUM:对所有目标单元格的值求和

注意:该公式依赖宏表函数,需启用宏并将文件保存为.xlsm格式。

方法2:自定义名称+SUM函数(兼容旧版本)

对于Excel 2019及更早版本,可通过自定义名称实现动态引用:

  1. 按Ctrl+F3打开名称管理器
  2. 点击「新建」,名称设为AllSheets,引用位置输入:
=GET.WORKBOOK(1)&T(NOW())

T(NOW())的作用是让名称随时间自动刷新,避免手动更新
3. 返回主表的总计单元格,输入公式:

=SUM(INDIRECT("'"&SUBSTITUTE(AllSheets,LEFT(AllSheets,FIND("]",AllSheets)),"")&"'!B2"))
  • SUBSTITUTE:从AllSheets的返回值中提取纯工作表名称
  • 其余逻辑同方法1,同样需要启用宏并保存为.xlsm

方法3:VBA宏实现全自动化

如果不想依赖宏表函数,用VBA代码实现新增/删除工作表时自动更新总计:

  1. 按Alt+F11打开VBA编辑器
  2. 双击左侧工程窗口中的主表(如总计表),粘贴以下代码:
Private Sub Worksheet_Activate()
    UpdateTotal
End Sub

Private Sub UpdateTotal()
    Dim ws As Worksheet
    Dim totalVal As Double
    totalVal = 0
    ' 目标单元格为B2,可根据实际修改
    Const TargetCell As String = "B2"
    
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> Me.Name Then
            totalVal = totalVal + ws.Range(TargetCell).Value
        End If
    Next ws
    
    Me.Range(TargetCell).Value = totalVal
End Sub
  1. 双击ThisWorkbook,粘贴以下代码:
Private Sub Workbook_NewSheet(ByVal Sh As Object)
    ' 新增工作表时自动更新
    Sheets("总计表").UpdateTotal
End Sub

Private Sub Workbook_SheetDelete(ByVal Sh As Object)
    ' 删除工作表时自动更新
    Sheets("总计表").UpdateTotal
End Sub
  1. 保存文件为.xlsm格式,之后每次激活主表、新增或删除工作表,总计都会自动计算。

通用注意事项

  • 所有涉及宏的方案都需要在Excel中启用宏(文件打开时选择「启用内容」)
  • 公式或代码中的单元格位置(如B2)、主表名称(如总计表)需根据实际需求修改
  • 动态数组方案在Excel 365中会自动刷新,旧版本可能需要按F9手动刷新

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:07:19