怎样使用VBA符合三个条件则汇总数据?
来源:网络收集 点击: 时间:2024-04-18首先在开发工具中打开VBA编辑器

在单元格区域当中输入一些内容作为例子

在VBA编辑器中插入模块

在模块当中输入如下代码,然后运行
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 .End(xlUp).Row).SelectWith Selection.Borders 边框.LineStyle=xlContinuous 线型.Weight=xlThin 粗细End WithEnd Sub


智能手机助理给我们的生活带来了极大的便利!
版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_536910.html