以下是一个用VBA编写的宏,用于统计多个工作表中每种材料的总使用量。

Sub 统计材料使用量()
    Dim ws As Worksheet
    Dim lastRow As Long, i As Long
    Dim material As String
    Dim totalUsage As Double
    
    ' 在第一个工作表中创建一个新的汇总表
    Sheets.Add(After:=Sheets(Sheets.Count)).Name = "汇总表"
    Sheets("汇总表").Cells(1, 1).Value = "材料"
    Sheets("汇总表").Cells(1, 2).Value = "总使用量"
    
    ' 遍历每个工作表
    For Each ws In ThisWorkbook.Worksheets
        ' 跳过汇总表
        If ws.Name <> "汇总表" Then
            lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
            
            ' 遍历每一行
            For i = 2 To lastRow
                material = ws.Cells(i, 1).Value ' 假设材料名称在第一列
                totalUsage = totalUsage + ws.Cells(i, 2).Value ' 假设使用量在第二列
                
                ' 在汇总表中查找材料
                Dim found As Range
                Set found = Sheets("汇总表").Columns(1).Find(material, LookIn:=xlValues, LookAt:=xlWhole)
                
                ' 如果材料已经存在于汇总表中,则更新对应的使用量
                If Not found Is Nothing Then
                    Sheets("汇总表").Cells(found.Row, 2).Value = Sheets("汇总表").Cells(found.Row, 2).Value + ws.Cells(i, 2).Value
                Else
                    ' 否则,在汇总表的下一行添加新的材料和使用量
                    Sheets("汇总表").Cells(Sheets("汇总表").Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Value = material
                    Sheets("汇总表").Cells(Sheets("汇总表").Cells(Rows.Count, 1).End(xlUp).Row, 2).Value = ws.Cells(i, 2).Value
                End If
            Next i
        End If
    Next ws
End Sub

请将此代码复制粘贴到VBA编辑器中(按下Alt + F11打开VBA编辑器),然后运行宏。它将在您的工作簿中创建一个新的工作表“汇总表”,并将每种材料的总使用量列出。

请注意,此代码假设材料名称在每个工作表的第一列,使用量在第二列。如果您的数据结构不同,请根据实际情况进行修改


原文地址: http://www.cveoy.top/t/topic/h6D4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录