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

如何在名称可变的多Excel工作表中按物料汇总数量?

解决方案:跨动态Job工作表汇总物料数量

一、前置操作

在「Materials」工作表的G列(即你指定的TotalQty列)表头单元格(G2)输入TotalQty。

二、VBA代码实现(新手友好复制版)

按Alt + F11打开VBA编辑器,右键点击左侧工程窗口里的当前工作簿名称,选择「插入」→「模块」,粘贴以下代码:

Sub CalculateTotalQty()
    Dim wsMaterials As Worksheet
    Dim wsJob As Worksheet
    Dim lastRowMat As Long
    Dim lastRowJob As Long
    Dim i As Long
    Dim j As Long
    Dim materialName As String
    Dim totalQty As Double
    
    ' 指定Materials工作表
    Set wsMaterials = ThisWorkbook.Worksheets("Materials")
    lastRowMat = wsMaterials.Cells(wsMaterials.Rows.Count, "A").End(xlUp).Row
    
    ' 遍历Materials表的每一行物料
    For i = 3 To lastRowMat
        materialName = wsMaterials.Cells(i, "A").Value
        totalQty = 0
        
        ' 遍历所有工作表,筛选Job类表
        For Each wsJob In ThisWorkbook.Worksheets
            If wsJob.Name <> "Master" And wsJob.Name <> "Materials" Then
                lastRowJob = wsJob.Cells(wsJob.Rows.Count, "C").End(xlUp).Row
                
                ' 在当前Job表的C列匹配物料,累加B列数量
                For j = 2 To lastRowJob ' 假设Job表表头在第2行,可自行调整起始行号
                    If wsJob.Cells(j, "C").Value = materialName Then
                        totalQty = totalQty + wsJob.Cells(j, "B").Value
                    End If
                Next j
            End If
        Next wsJob
        
        ' 写入汇总结果到TotalQty列
        wsMaterials.Cells(i, "G").Value = totalQty
    Next i
    
    MsgBox "物料数量汇总完成!", vbInformation
End Sub

三、代码使用指南

  1. 运行方式:回到Excel界面,按Alt + F8,选择CalculateTotalQty点击「运行」即可。
  2. 适配调整:如果你的Job表表头不在第2行,把代码里的For j = 2 To lastRowJob改成实际数据起始行号(比如表头在第1行就改成j = 1)。
  3. 自动更新:新手先手动运行汇总即可,后续熟悉VBA后,可以添加工作表变更触发事件实现自动更新。

四、工单生成建议

汇总完成后,可直接用Materials表G列的汇总数据,通过Excel邮件合并功能生成工单;也可以在现有VBA基础上扩展代码,自动生成格式固定的工单工作表,这部分可根据你的工单格式需求后续调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 10:52:36