以下是一个示例代码,用于实现您所描述的功能:

Sub SummarizeData() '定义变量 Dim LastRow As Long Dim CurrentRow As Long Dim CurrentBCDE As String Dim CurrentF As Double

'设置工作表
Dim SourceSheet As Worksheet
Set SourceSheet = ActiveSheet

'创建新工作簿
Dim NewBook As Workbook
Set NewBook = Workbooks.Add

'创建新工作表
Dim NewSheet As Worksheet
Set NewSheet = NewBook.Worksheets.Add

'命名新工作表
NewSheet.Name = "Sheet1"

'复制表头
SourceSheet.Range("A1:F1").Copy Destination:=NewSheet.Range("A1:F1")

'获取最后一行
LastRow = SourceSheet.Cells(Rows.Count, 1).End(xlUp).Row

'循环处理每一行
For CurrentRow = 2 To LastRow
    '获取当前行的BCDE值和F值
    CurrentBCDE = SourceSheet.Range("B" & CurrentRow).Value & SourceSheet.Range("C" & CurrentRow).Value & SourceSheet.Range("D" & CurrentRow).Value & SourceSheet.Range("E" & CurrentRow).Value
    CurrentF = SourceSheet.Range("F" & CurrentRow).Value
    
    '查找是否存在相同的BCDE值
    Dim FoundRange As Range
    Set FoundRange = NewSheet.Range("B2:B" & NewSheet.Cells(Rows.Count, 2).End(xlUp).Row).Find(CurrentBCDE, LookIn:=xlValues, LookAt:=xlWhole)
    
    If FoundRange Is Nothing Then
        '如果不存在,则在新工作表中添加新的汇总行
        NewSheet.Range("A" & NewSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1).Value = SourceSheet.Range("A" & CurrentRow).Value
        NewSheet.Range("B" & NewSheet.Cells(Rows.Count, 2).End(xlUp).Row).Value = SourceSheet.Range("B" & CurrentRow).Value
        NewSheet.Range("C" & NewSheet.Cells(Rows.Count, 3).End(xlUp).Row).Value = SourceSheet.Range("C" & CurrentRow).Value
        NewSheet.Range("D" & NewSheet.Cells(Rows.Count, 4).End(xlUp).Row).Value = SourceSheet.Range("D" & CurrentRow).Value
        NewSheet.Range("E" & NewSheet.Cells(Rows.Count, 5).End(xlUp).Row).Value = SourceSheet.Range("E" & CurrentRow).Value
        NewSheet.Range("F" & NewSheet.Cells(Rows.Count, 6).End(xlUp).Row).Value = CurrentF
    Else
        '如果存在,则在该行的F列上累加值
        FoundRange.Offset(0, 4).Value = FoundRange.Offset(0, 4).Value + CurrentF
    End If
Next CurrentRow

End Sub

该代码需要在VBA编辑器中执行。要打开VBA编辑器,请按下“Alt”和“F11”键。将代码复制并粘贴到编辑器中,然后按下“F5”键或单击工具栏上的“运行”按钮即可执行代码。执行后,将在新工作簿中创建一个名为“Sheet1”的工作表,并将分类汇总结果放在其中。注意,在执行代码之前,请确保原始数据位于活动工作表中。

做个vba四条件分类汇总bcde四列为条件f列为数值列对相同的bcde进行f列数据汇总新建1个workbook把分类汇总结果放在新工作表sheet1中

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

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