Excel精英培训网

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

[已解决]汇总相关数据

[复制链接]
发表于 2016-7-26 16:26 | 显示全部楼层 |阅读模式
简化模型如附件,数据量超大
最佳答案
2016-7-26 19:45
billyzhang0609 发表于 2016-7-26 16:29
附件和截图如下:
Sub hebing()
   Dim arr, brr, i, j, d
   Set d = CreateObject("scripting.dictionary")
   arr = [a2:c16]
   For i = 1 To UBound(arr)
      d(arr(i, 1)) = ""
   Next
   k = d.keys
   ReDim brr(1 To UBound(k) + 1, 1 To 3)
   For i = 1 To UBound(k) + 1
      For j = 1 To UBound(arr)
         If k(i - 1) = arr(j, 1) Then
            brr(i, 1) = arr(j, 1)
            brr(i, 2) = brr(i, 2) + arr(j, 2)
            brr(i, 3) = brr(i, 3) + arr(j, 3)
         End If
      Next j
   Next i
   [a23].Resize(i - 1, 3) = brr
End Sub
 楼主| 发表于 2016-7-26 16:29 | 显示全部楼层
附件和截图如下:
2016-7-26 16-18-32.jpg

汇总.zip

7.05 KB, 下载次数: 2

回复

使用道具 举报

发表于 2016-7-26 19:45 | 显示全部楼层    本楼为最佳答案   
billyzhang0609 发表于 2016-7-26 16:29
附件和截图如下:
Sub hebing()
   Dim arr, brr, i, j, d
   Set d = CreateObject("scripting.dictionary")
   arr = [a2:c16]
   For i = 1 To UBound(arr)
      d(arr(i, 1)) = ""
   Next
   k = d.keys
   ReDim brr(1 To UBound(k) + 1, 1 To 3)
   For i = 1 To UBound(k) + 1
      For j = 1 To UBound(arr)
         If k(i - 1) = arr(j, 1) Then
            brr(i, 1) = arr(j, 1)
            brr(i, 2) = brr(i, 2) + arr(j, 2)
            brr(i, 3) = brr(i, 3) + arr(j, 3)
         End If
      Next j
   Next i
   [a23].Resize(i - 1, 3) = brr
End Sub
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 11:42 , Processed in 0.319488 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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