Excel精英培训网

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

[已解决]根据统计客户统计业务量

[复制链接]
发表于 2017-5-12 07:35 | 显示全部楼层 |阅读模式
请大神帮忙,谢谢!
最佳答案
2017-5-12 09:30
按要求只显示前48条。
  1. Sub 生成()
  2.     Set d = CreateObject("scripting.dictionary")
  3.     arr = Sheets(1).Range("a4:d" & Sheets(1).[c65536].End(3).Row)
  4.     Dim brr(1 To 16, 1 To 11)
  5.     For i = 1 To UBound(arr)
  6.         x = arr(i, 3)
  7.         If x <> "" Then d(x) = d(x) + arr(i, 4)
  8.     Next
  9.     For Each x In d.keys
  10.         n = n + 1
  11.         If n > 48 Then Exit For
  12.         i = n Mod 16: If i = 0 Then i = 16
  13.         k = Int((n - 0.1) / 16): j = 4 * k + 1
  14.         brr(i, j) = n
  15.         brr(i, j + 1) = x
  16.         brr(i, j + 2) = d(x)
  17.     Next
  18.     [a2:k17] = ""
  19.     [a2].Resize(UBound(brr), UBound(brr, 2)) = brr
  20. End Sub
复制代码

2017年业绩总统计表.rar

12.29 KB, 下载次数: 10

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-5-12 08:04 | 显示全部楼层
查查字典的例子,字典累加就可以解决
回复

使用道具 举报

 楼主| 发表于 2017-5-12 08:21 | 显示全部楼层
回复

使用道具 举报

发表于 2017-5-12 09:14 | 显示全部楼层
看看 5.rar (14.97 KB, 下载次数: 4)
回复

使用道具 举报

发表于 2017-5-12 09:30 | 显示全部楼层    本楼为最佳答案   
按要求只显示前48条。
  1. Sub 生成()
  2.     Set d = CreateObject("scripting.dictionary")
  3.     arr = Sheets(1).Range("a4:d" & Sheets(1).[c65536].End(3).Row)
  4.     Dim brr(1 To 16, 1 To 11)
  5.     For i = 1 To UBound(arr)
  6.         x = arr(i, 3)
  7.         If x <> "" Then d(x) = d(x) + arr(i, 4)
  8.     Next
  9.     For Each x In d.keys
  10.         n = n + 1
  11.         If n > 48 Then Exit For
  12.         i = n Mod 16: If i = 0 Then i = 16
  13.         k = Int((n - 0.1) / 16): j = 4 * k + 1
  14.         brr(i, j) = n
  15.         brr(i, j + 1) = x
  16.         brr(i, j + 2) = d(x)
  17.     Next
  18.     [a2:k17] = ""
  19.     [a2].Resize(UBound(brr), UBound(brr, 2)) = brr
  20. End Sub
复制代码

2017年业绩总统计表.rar

22.42 KB, 下载次数: 8

回复

使用道具 举报

 楼主| 发表于 2017-5-12 10:52 | 显示全部楼层
谢谢!太好了,终于解决了
回复

使用道具 举报

 楼主| 发表于 2017-5-12 10:54 | 显示全部楼层

你的我怎么弄来弄去,弄出重复名字跟金额出来了,可能我没弄名白,总之谢谢你了
回复

使用道具 举报

发表于 2017-5-12 11:17 | 显示全部楼层
本帖最后由 chart888 于 2017-5-12 11:24 编辑
  1. Private Sub CommandButton1_Click()

  2. Application.ScreenUpdating = False
  3. Application.DisplayAlerts = False

  4. Dim ar
  5. Dim r, i, r1, r2 As Integer
  6. r = ThisWorkbook.Worksheets("1").Range("C65536").End(xlUp).Row
  7. Set d = CreateObject("Scripting.Dictionary")
  8.     ar = ThisWorkbook.Worksheets("1").Range("C4:D" & r)
  9.     For i = 1 To UBound(ar)
  10.         If ar(i, 1) <> "" Then d(ar(i, 1)) = d(ar(i, 1)) + ar(i, 2)
  11.     Next
  12.    
  13. With ThisWorkbook.Worksheets("2")
  14.     .Range("B2:C65536").ClearContents
  15.     .Range("F2:G65536").ClearContents
  16.     .Range("J2:K65536").ClearContents
  17.     .Range("B2").Resize(d.Count, 2) = Application.Transpose(Array(d.keys, d.items))
  18.     If .Range("B18").Value <> "" Then
  19.         r1 = .Range("B65536").End(xlUp).Row
  20.         .Range("B18").Resize(r1 - 17, 2).Copy
  21.         .Range("F2").PasteSpecial Paste:=xlPasteValues
  22.         .Range("B18:C65536").ClearContents
  23.     End If
  24.         If .Range("F18").Value <> "" Then
  25.             r2 = .Range("F65536").End(xlUp).Row
  26.             .Range("F18").Resize(r12 - 17, 2).Copy
  27.             .Range("J2").PasteSpecial Paste:=xlPasteValues
  28.             .Range("F18:G65536").ClearContents
  29.         End If
  30. End With

  31. Application.ScreenUpdating = True
  32. Application.DisplayAlerts = True
  33.    
  34. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2017-5-23 12:51 | 显示全部楼层

不好意思这段时间出差忙去了,没上来看,才看到你帮我的答案,谢了哈
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-18 21:27 , Processed in 0.387100 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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