ZiGma

【VBA】统计重复出现的姓名及出现次数

字数统计: 387阅读时长: 2 min
2018/12/16 Share

需求

同事又来提需求了,几百人的名单需要统计出现过的人名,还需要统计出现过的次数。

如果依靠肉眼估计眼睛都瞎了,因此求助了我,昨天没电脑想网上看一下类似的功能的公式,但是几乎都是不尽人意。

而且利用COUNTIF公式还是需要先知道出现过那些人,VLOOKUP似乎也不能一步到位。排序+筛选是个办法,但是感觉有点曲线救国,会打乱顺序,所以依旧利用万能的VBA来处理。

思路

利用VBA定位A列最后非空单元格,然后在B列利用嵌套循环匹配有无出现过该人,如果有则次数加1,如果没有则在B列最后添加该人姓名,并且定义出现次数为1。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub test()
For i = 1 To Range("A100").End(xlUp).Row
kim = 0
For j = 2 To Range("B50").End(xlUp).Row
If Range("A" & i) = Range("B" & j) Then
Range("C" & j) = Range("C" & j) + 1
kim = 1
End If
Next
If kim = 0 Then
max_r = Range("B50").End(xlUp).Row
Range("B" & max_r + 1) = Range("A" & i)
Range("C" & max_r + 1) = 1
End If
Next
End Sub

总结

相对于使用公式和透视图,个人还是比较喜欢VBA,不需要其他填充之类操作,点击就能出来结果,不会污染源数据,更为方便的是可以另存为工具,在下次使用时将目标数据粘贴进来就完事了。

CATALOG
  1. 1. 需求
  2. 2. 思路
  3. 3. 代码
  4. 4. 总结