虽然Excel自身有些统计函数,如:Countif、Count、Counta等等,这些基本能够满足我们日常办公需要,但是也会遇到要统计不重复项的数量,这方面Excel没有直接函数能够实现的,下面我给大家介绍两种实现方法。

一、功能需求:要求根据下面出勤记录表统计9(3)班组人员数量,如下图所示:

Excel VBA秘籍:NoRepeatCount - 统计不重复项的数量-趣帮office教程网

二、方法1:自定义函数,在I4单元格输入公式:=NoRepeatCount(D4:D17),操作步骤和结果如下图所示:

Excel VBA秘籍:NoRepeatCount - 统计不重复项的数量-趣帮office教程网

NoRepeatCount函数VBA代码如下(已做详细注解):

'统计不重复项数量
Public Function NoRepeatCount(Target As Range)
'声明两个可变类型的变量
Dim d, c
'创建一个字典对象赋值给d变量,d变量为字典类型
Set d = CreateObject("scripting.dictionary")
'对Target遍历循环
For Each c In Target
'判断当前c的值是否存在于d字典的值中
If Not d.exists(c.Value) Then
'如果不存在,那么把当前值作为key,空字符作为value添加到d字典中
d.Add c.Value, ""
End If
Next c
'返回d字典key值的个数作为函数运行结果
NoRepeatCount = d.Count
End Function

三、方法2:COUNTA UNQUE组合函数,在I5单元格输入公式:=COUNTA(UNIQUE(D4:D17) ,操作步骤和结果如下图所示(其结果与自定义函数完全一致):

Excel VBA秘籍:NoRepeatCount - 统计不重复项的数量-趣帮office教程网

四、总结:两种方法都非常简单,当然直接用组合函数更加简便,但是UNIQUE高级函数只有Excel365版本能使用,因此,其它版本Excel推荐使用第一种应用普及较广些的方法。哪一个更加简便,大家用了就知道了。