Excel精英培训网

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

[已解决]高难度的汇总,不知道有没有老师肯出手帮帮无助的我!!!

[复制链接]
发表于 2012-10-27 17:32 | 显示全部楼层 |阅读模式
高难度的汇总,不知道有没有老师能出手帮帮无助的我!!!

07.jpg

高难度汇总Book1.rar (7.5 KB, 下载次数: 12)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-10-27 22:36 | 显示全部楼层
回复

使用道具 举报

发表于 2012-10-27 22:45 | 显示全部楼层    本楼为最佳答案   
  1. Sub 兰版的下棋法()
  2. Dim arr, arr1(1 To 1000, 1 To 8), arr2, sr
  3. Dim x, y, k, d, hk, rn As Range
  4. arr2 = Array("编码", "产地", "货品", "规格", "方式", "单价", "听数", "金额")
  5. arr = Range("c5:t17")
  6. Set d = CreateObject("scripting.dictionary")
  7. For x = 1 To UBound(arr)
  8. sr = arr(x, 2) & arr(x, 7)
  9. If d.exists(sr) Then
  10. hk = d(sr)
  11. arr1(hk, 7) = arr1(hk, 7) + arr(x, 16)
  12. arr1(hk, 8) = arr1(hk, 8) + arr(x, 9)
  13. Else
  14. k = k + 1
  15. d(sr) = k
  16. arr1(k, 1) = arr(x, 18)
  17. arr1(k, 2) = arr(x, 1)
  18. arr1(k, 3) = arr(x, 2)
  19. arr1(k, 4) = arr(x, 3)
  20. arr1(k, 5) = arr(x, 4)
  21. arr1(k, 6) = arr(x, 7)
  22. arr1(k, 7) = arr(x, 16)
  23. arr1(k, 8) = arr(x, 9)
  24. End If
  25. Next x
  26. Sheets.Add before:=Sheets(1)
  27. With ActiveSheet
  28. .Name = "数据汇总表" & Sheets.Count
  29. .Cells(1, 1).Resize(1, 8) = arr2
  30. .Cells(2, "a").Resize(UBound(arr1), 8) = arr1
  31. For Each rn In .Range("c2:c" & UBound(arr1) + 1)
  32. If Application.WorksheetFunction.CountIf(.Range("c2:c" & UBound(arr1) + 1), rn) = 1 Then rn.EntireRow.Delete
  33. Next
  34. End With
  35. End Sub

复制代码
仅供参考,向兰版致敬

高难度汇总Book1.rar

14.83 KB, 下载次数: 16

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-16 11:57 , Processed in 0.730521 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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