怎样使用VBA符合三个条件则汇总数据?
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 If
Next
.Columns("g").Delete '删除辅助列
End With
Columns("j").Delete '删除辅助列
MsgBox "运行时间总共" & (Hour(Now()) * 3600+Minute(Now()) * 60+
Second(Now()))-tim & "秒!", vbOKOnly, "运行完毕"'报告运行时间
Application.ScreenUpdating=True '禁止刷新屏幕
Call边框
End Sub
Private Sub边框()
Sheet2.Activate
Sheet2.Range("A3:f" & [f1048576].End(xlUp).Row).Select
With Selection.Borders '边框
.LineStyle=xlContinuous '线型
.Weight=xlThin '粗细
End With
End Sub

5、 用快捷键Alt+F8调出运行宏窗口,然后单击“执行”按钮,程序执行后将弹出运行时间对话框

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:39
阅读量:173
阅读量:33
阅读量:89
阅读量:53