Excel精英培训网

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

[已解决]如何用VBA计算每个组别的不重复客户数?

[复制链接]
发表于 2016-5-11 14:32 | 显示全部楼层 |阅读模式
如何用VBA计算不同分组的“不重复”客户数?求指导啊,不尽感激
最佳答案
2016-5-11 15:36
  1. Sub x()
  2. Dim a, d, d1, x%, b, c(), s%
  3. Set d = CreateObject("scripting.dictionary")
  4. Set d1 = CreateObject("scripting.dictionary")
  5. a = Range("a1").CurrentRegion
  6. For x = 2 To UBound(a)
  7.     d(a(x, 2)) = d(a(x, 2))
  8. Next
  9. b = d.keys
  10. ReDim c(1 To d.Count, 1 To 2)
  11.   For x = 1 To d.Count
  12.      c(x, 1) = b(x - 1)
  13.      For s = 2 To UBound(a)
  14.          If a(s, 2) = c(x, 1) Then d1(b(x - 1) & a(s, 1)) = ""
  15.      Next
  16.      c(x, 2) = d1.Count: d1.RemoveAll
  17. Next
  18. [e1].Resize(d.Count, 2) = c
  19. End Sub
复制代码

数据.zip

133.64 KB, 下载次数: 19

源数据

发表于 2016-5-11 15:36 | 显示全部楼层    本楼为最佳答案   
  1. Sub x()
  2. Dim a, d, d1, x%, b, c(), s%
  3. Set d = CreateObject("scripting.dictionary")
  4. Set d1 = CreateObject("scripting.dictionary")
  5. a = Range("a1").CurrentRegion
  6. For x = 2 To UBound(a)
  7.     d(a(x, 2)) = d(a(x, 2))
  8. Next
  9. b = d.keys
  10. ReDim c(1 To d.Count, 1 To 2)
  11.   For x = 1 To d.Count
  12.      c(x, 1) = b(x - 1)
  13.      For s = 2 To UBound(a)
  14.          If a(s, 2) = c(x, 1) Then d1(b(x - 1) & a(s, 1)) = ""
  15.      Next
  16.      c(x, 2) = d1.Count: d1.RemoveAll
  17. Next
  18. [e1].Resize(d.Count, 2) = c
  19. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
望帝春心 + 3 感觉爱上橘子姐姐了*=_=*

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-5-11 18:01 | 显示全部楼层
橘子红 发表于 2016-5-11 15:36

谢谢大神!!!!受教了呀!{:1112:}
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 19:35 , Processed in 0.946110 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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