|
本帖最后由 vicky427000 于 2023-4-11 16:09 编辑
帮忙修改代码
一个EXCEL工作簿,里面有很多按照分表,我现在要根据所以表格C列的款号,做数据汇总,做在汇总表里,有些表格有如果有重复的款号,就要把重复款号的数据进行汇总,汇总数据主要是从K列到Q列,请写一个VBA代码
我的代码有问题,我要求汇总表从C列第四行开始填,就是不改变整个表的大框架汇总,然后K的数据填在K,不知道为什么我的数据都移动了
按款号汇总.rar
(558.22 KB, 下载次数: 8)
Sub 数据汇总()
Dim ws As Worksheet ' 分表的工作表
Dim wsSummary As Worksheet ' 汇总表的工作表
Dim rngSrc As Range ' 源数据范围
Dim rngDest As Range ' 汇总数据范围
Dim lastRow As Long ' 分表的最后一行
Dim summaryRow As Long ' 汇总表的当前行
Dim rowNum As Long ' 分表的行号
' 设置汇总表
Set wsSummary = ThisWorkbook.Sheets("汇总表")
summaryRow = 2 ' 从第 2 行开始写入汇总数据
' 遍历每个分表
For Each ws In ThisWorkbook.Sheets
' 排除汇总表
If ws.Name <> "汇总表" Then
' 获取分表的最后一行
lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row
' 设置源数据范围
Set rngSrc = ws.Range("C1:C" & lastRow)
' 遍历源数据范围
For rowNum = 1 To rngSrc.Rows.Count
' 判断款号是否为空
If Not IsEmpty(rngSrc.Cells(rowNum, 1)) Then
' 判断汇总表是否已存在相同款号的数据
If wsSummary.Range("A:A").Find(rngSrc.Cells(rowNum, 1).Value, , xlValues, xlWhole) Is Nothing Then
' 汇总数据写入汇总表
wsSummary.Cells(summaryRow, 1).Value = rngSrc.Cells(rowNum, 1).Value ' 款号
wsSummary.Cells(summaryRow, 2).Value = ws.Name ' 分表名称
wsSummary.Cells(summaryRow, 3).Value = ws.Cells(rowNum, 11).Value ' K 列数据
wsSummary.Cells(summaryRow, 4).Value = ws.Cells(rowNum, 12).Value ' L 列数据
wsSummary.Cells(summaryRow, 5).Value = ws.Cells(rowNum, 13).Value ' M 列数据
wsSummary.Cells(summaryRow, 6).Value = ws.Cells(rowNum, 14).Value ' N 列数据
wsSummary.Cells(summaryRow, 7).Value = ws.Cells(rowNum, 15).Value ' O 列数据
wsSummary.Cells(summaryRow, 8).Value = ws.Cells(rowNum, 16).Value ' P 列数据
wsSummary.Cells(summaryRow, 9).Value = ws.Cells(rowNum, 17).Value ' Q 列数据
summaryRow = summaryRow + 1 ' 下一行
Else
' 如果汇总表已存在相同款号的数据,则进行汇总
Dim destRow As Range
Set destRow = wsSummary.Range("A:A").Find(rngSrc.Cells(rowNum, 1).Value, , xlValues, xlWhole).Offset(0, 2) ' 汇总表款号
' 进行汇总
destRow.Value = destRow.Value + ws.Cells(rowNum, 11).Value ' K 列数据
destRow.Offset(0, 1).Value = destRow.Offset(0, 1).Value + ws.Cells(rowNum, 12).Value ' L 列数据
destRow.Offset(0, 2).Value = destRow.Offset(0, 2).Value + ws.Cells(rowNum, 13).Value ' M 列数据
destRow.Offset(0, 3).Value = destRow.Offset(0, 3).Value + ws.Cells(rowNum, 14).Value ' N 列数据
destRow.Offset(0, 4).Value = destRow.Offset(0, 4).Value + ws.Cells(rowNum, 15).Value ' O 列数据
destRow.Offset(0, 5).Value = destRow.Offset(0, 5).Value + ws.Cells(rowNum, 16).Value ' P 列数据
destRow.Offset(0, 6).Value = destRow.Offset(0, 6).Value + ws.Cells(rowNum, 17).Value ' Q 列数据
End If
End If
Next rowNum
End If
Next ws
MsgBox "数据汇总完成!", vbInformation
End Sub
|
|