1、首先在开发工具中打开VBA编辑器
2、在单元格区域当中输入一些内容作为例子
3、在VBA编辑器中插入模块
4、在模块当中输入如下代码,然后运行Sub 汇总() Dim i&, tim&, j% tim=Hour(Now()) * 3600+Minute(Now()) * 60+Second(Now()) Application.ScreenUpdating=False '禁止刷新屏幕 Sheet2.Cells.Clear '清除原数据 Rows("1:3").Copy Sheet2.Range("a1") '复制标题 Sheet2.Columns("d:f").Delete Shift:=xlToLeft For i=4 To Range("A1048576").End(xlUp).Row '给变量i赋值,从4到A列最后一个非空行数 Cells(i, "j")=Cells(i, "b") & Cells(i, "c") & Cells(i, "d") '在j列产生一个辅助列 Next '重复下一个 With Sheet2 For i=4 To Range("A65536").End(xlUp).Row '给变量i赋值,从4到A列最后一个非空行数 If .Columns("I").Find(Cells(i, "j")) Is Nothing Then '如果汇总表I列不存在辅助列J列之数据 Range("b" & i & ":e" & i).Copy .Range("A1048576").End(xlUp). Offset(1, 0) '将A列除外的本行数据复制到汇总表 '对数量和金额进行条件汇总 .Range("A1048576").End(xlUp).Offset(0, 4)= Application.WorksheetFunction.SumIf(Range("j4:j1048576"), Cells(i, "j"),Range("H4:H1048576")) .Range("A1048576").End(xlUp).Offset(0, 5)= Application.WorksheetFunction.SumIf(Range("j4:j1048576"), Cells(i, "j"),Range("I4:I1048576")) .Range("A1048576").End(xlUp).Offset(0, 6)=Cells(i, "j") .Range("A1048576").End(xlUp).Offset(0, 3)=Cells(i, "g") End IfNext.Columns("g").Delete '删除辅助列End WithColumns("j").Delete '删除辅助列MsgBox "运行时间总共" & (Hour(Now()) * 3600+Minute(Now()) * 60+ Second(Now()))-tim & "秒!", vbOKOnly, "运行完毕"'报告运行时间Application.ScreenUpdating=True '禁止刷新屏幕Call边框End SubPrivate Sub边框()Sheet2.ActivateSheet2.Range("A3:f" & [f1048576].End(xlUp).Row).SelectWith Selection.Borders '边框.LineStyle=xlContinuous '线型.Weight=xlThin '粗细End WithEnd Sub
5、用快捷键Alt+F8调出运行宏窗口,然后单击“执行”按钮,程序执行后将弹出运行时间对话框