Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1706|回复: 3

[已解决]多条件汇总代码优化

[复制链接]
发表于 2016-4-30 15:50 | 显示全部楼层 |阅读模式
本帖最后由 安全网 于 2016-5-2 14:40 编辑

具体见图和附件
最佳答案
2016-4-30 22:42
多条件统计VBA代码优化430.rar (26.91 KB, 下载次数: 23)
QQ图片20160430154001.png

多条件统计VBA代码优化.rar

20.72 KB, 下载次数: 5

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-4-30 22:41 | 显示全部楼层
  1. Sub qcw()
  2. Application.ScreenUpdating = False
  3. Dim brr(), i, j, m, n, r, F, W
  4. F = False
  5. For Each W In Workbooks
  6.     If W.Name = "数据表.xlsm" Then
  7.        F = True
  8.        MsgBox "数据表工作薄已经打开"
  9.        Exit Sub
  10.     End If
  11. Next W
  12. If F = False Then
  13. Set wb = Workbooks.Open("" & ThisWorkbook.Path & "\数据表.xlsm")
  14. arr = wb.Sheets(1).Range("a2:g" & wb.Sheets(1).[Match(1, 0 / (A:A <> ""))])
  15. wb.Close
  16. r = Range("b65536").End(xlUp).Row
  17. ReDim brr(1 To r, 1 To 2)
  18. For i = 4 To r - 1
  19. n = 0: m = 0
  20.   For j = 1 To UBound(arr)
  21.     If arr(j, 4) = Range("c2") And arr(j, 5) = Cells(i, 2) Then '
  22.         n = arr(j, 7) + n: Y = arr(j, 7) + Y
  23.     End If
  24.     If arr(j, 3) = Range("d2") And arr(j, 5) = Cells(i, 2) Then '
  25.         m = arr(j, 7) + m: Z = arr(j, 7) + Z
  26.     End If
  27.   Next j
  28.   brr(i - 3, 1) = n: brr(i - 3, 2) = m
  29. Next i
  30. brr(r - 3, 1) = Y: brr(r - 3, 2) = Z
  31. [c4].Resize(r, 2) = brr
  32. End If
  33. Application.ScreenUpdating = True
  34. End Sub
复制代码
回复

使用道具 举报

发表于 2016-4-30 22:42 | 显示全部楼层    本楼为最佳答案   
多条件统计VBA代码优化430.rar (26.91 KB, 下载次数: 23)
回复

使用道具 举报

 楼主| 发表于 2016-5-2 14:39 | 显示全部楼层
七彩屋 发表于 2016-4-30 22:42

谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-20 11:58 , Processed in 0.158175 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表