我们常常需要在Excel中计算某一列的去重复计数,例如客户数量,SKU数量等等。但是在Excel中并没有类似于DISTINCTCOUNT这样的函数可以直接求出一列中去重复计数的值,所以我们只能用两个或者两个以上的函数组合来求出去重复计数。
去重复计数,我们往往会遇到两种情况,一种是无筛选条件的去重复计数,另一种是有筛选条件的去重复计数。
下面我分别给大家介绍几个常用的公式套路。
无筛选条件的去重复计数
下面就介绍两个最简单的计算“无筛选条件的去重复计数”的公式。
什么是无筛选条件的去重复计数呢?我们可以看到下图,有Channel列,Customer Category列,不过我们计算的是所有Channel,Customer Category的不重复Customer ID的数量。也就是对Channel和CustomerCategory不做筛选。
需要说明,这两个公式并不是运行效率最高的公式,但是最简单最容易理解。如果数据行数超过50万行,不建议使用此公式,反之,推荐使用。

- 如果你用的是比较新的Excel版本,例如公司笔记本的Excel版本,可以使用此公式。
=COUNTA( UNIQUE( C2:C151 ) )
大家在使用此公式的时候,只需要将C2:C151替换为你要计算去重复计数的列单元格范围即可。 - 如果你用的Excel版本是2019版本之前的(公司的Excel版本是2019之后的。)
=SUMPRODUCT( 1 / COUNTIF( C2:C151 , C2:C151 ) )
同样,和第一条公式一样,只需要将COUNTIF中的两个C2:C151替换为你要计算去重复计数的列单元格范围即可。
有筛选条件的去重复计数
什么是有筛选条件的去重复计数呢?我们可以看到下图,我们计算的是每个Channel的不重复Customer ID的数量。也就是对Channel做了筛选。这样的去重复计数就是有筛选条件的去重复计数。
- 下面来介绍一种单筛选条件的去重复计数。也就是只对一列做筛选,例如下图只对Channel做了筛选。

此处我只介绍一种计算公式,如上图。因为其他计算方式会比较复杂难以理解。
COUNTA( UNIQUE( FILTER( C:C , A:A=H13 ) ) )
大家在使用此公式的时候
- 记住将
C:C替换为你要做去重复计数的列(也可以像前面的C2:C151一样写计算的单元格范围) - 记住将
A:A替换为你要做筛选的列,例如Channel列就是A:A,如果是Customer Category列就是B:B - 记住将
H13修改为筛选列需要等于的值,例如DS / WS / KA,图中为引用了单元格的值。大家也可以将A:A=H13改为A:A="DS",直接输入需要等于的值。 - 考虑到我们很多时候需要横向或者纵向自动填充公式,我们需要对上面两条中的
C:C&A:A酌情考虑是否需要锁定(官方叫法是绝对引用)。
-
下面来介绍一种多筛选条件的去重复计数。也就是对多列做筛选,例如下图对Channel & Customer Category同时做了筛选。

此处我们基于单筛选条件的公式稍作修改,即可。
COUNTA( UNIQUE( FILTER( C:C , ( A:A=H13 ) * (B:B=J3) ) ) )可以发现,此公式和上面的但筛选条件公式,唯一的区别是从
A:A=H13变为了( A:A=H13 ) * (B:B=J3)。原理很简单,多条件筛选,就是让多个判断条件相乘即可。同理,如果有100个筛选条件,就把100个筛选条件相乘即可。
本次仅仅介绍计算公式套路,不对公式做详细的介绍。如果想要了解每一个函数的具体使用方法和原理,可以自行百度,或者来找我了解。