有三个excel工作表数据,需要分别将三个工作表中H列含有报废字样的行的C列到H列汇总到一个新的工作簿,从B行开始汇总,命名为报废物料汇总,将工作表H列含有领料字样的行汇总到另外一个新的工作簿,从B行开始汇总,命名为超领物料汇总,如何使用VBA编程实现
时间: 2024-09-25 10:08:23 浏览: 35
Excel在清产核资工作中的运用.pdf
要通过VBA编程实现这个需求,你需要在Excel环境中编写一段宏。以下是步骤和大致的VBA代码示例:
首先,确保你的Excel已启用宏,并创建或打开两个新工作簿,分别用于存放报废物料和超领物料的汇总。
```vba
Sub SummarizeData()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim destWorkbook1 As Workbook, destWorkbook2 As Workbook
Dim rng1 As Range, rng2 As Range, i As Long
' 新建并设置工作簿对象
Set destWorkbook1 = Workbooks.Add()
destWorkbook1.Name = "报废物料汇总"
Set destWorkbook2 = Workbooks.Add()
destWorkbook2.Name = "超领物料汇总"
' 获取源工作表
Set ws1 = ThisWorkbook.Worksheets("Sheet1") ' 假设H列报废数据在第一个工作表
Set ws2 = ThisWorkbook.Worksheets("Sheet2") ' 假设H列领料数据在第二个工作表
' 设置数据范围
Set rng1 = ws1.Range("B:H").SpecialCells(xlCellTypeVisible) ' 从B行开始筛选报废行
Set rng2 = ws2.Range("B:H").SpecialCells(xlCellTypeVisible) ' 同样,领料数据从B行开始
' 汇总到对应的工作簿
For Each cell In rng1
If cell.Value = "报废" Then
i = i + 1
destWorkbook1.Worksheets(1).Range("A" & i).Value = cell.Offset(0, -2).Value ' 报废物料汇总,C列数据
' ...其他汇总操作...
End If
Next cell
For Each cell In rng2
If cell.Value = "领料" Then
i = i + 1
destWorkbook2.Worksheets(1).Range("A" & i).Value = cell.Offset(0, -2).Value ' 超领物料汇总,C列数据
' ...其他汇总操作...
End If
Next cell
' 关闭不需要的工作表
ws1.Close SaveChanges:=False
ws2.Close SaveChanges:=False
' 显示消息
MsgBox "数据汇总完成!"
End Sub
```
记得将上述代码中的`Sheet1`和`Sheet2`替换为你实际的数据源工作表名。运行这个宏后,报废和超领物料的数据会按照要求汇总到各自的新的工作簿。
阅读全文