大家好,我是永不止步的老牛。
Excel有很多功能强大的函数,如果函数间能组合使用,那就是强强联手,今天我们介绍第7组强强联手“SUMPRODUCT+FREQUENCY+MATCH”组合,统计不重复项个数。
上一篇讲的SUMPRODUCT+COUNTIF统计不重复项个数适合少量数据,SUMPRODUCT+FREQUENCY+MATCH组合,统计不重复项个数适合数据量大的情况。
FREQUENCY+MATCH组合可以实现区域内计数,SUMPRODUCT函数可以对一个数组求和,这三个函数的具体用法可以参考我的文章。
Excel区间频率统计函数FREQUENCY
如何成为Excel大神—Match函数
用下面的例子展示一下如何使用这三个函数的组合,我们需要统计的是共有多少个客户购买了商品。
先看统计结果的公式是:
=SUMPRODUCT(--(FREQUENCY(MATCH(E2:E21,E2:E21,0),ROW(1:20))>0))
我们分步解析一下如何得出这个公式的:
1、使用MATCH函数查找客户出现的第一次的位置
为了好理解,我们临时加入辅助列,在F2输入公式MATCH(E2:E21,E2:E21,0),往下填充,我们就得到每名客户第一次出现的位置,就是说不管客户购买了多少次,只记录第一次出现的位置。
我们看一下这一列数据,每个客户对应的数字是唯一的。
2、使用FREQUENCY函数按区间统计出来次数
这里FREQUENCY的第2个参数用了用了ROW(1:20),就是自动生成了1,2,3...19,20这样的区间,FREQUENCY(MATCH(E2:E21,E2:E21,0),ROW(1:20))返回了数组{4;5;4;5;0;0;1;0;0;0;0;0;1;0;0;0;0;0;0;0;0},数字表示客户购买商品的次数,而我们需要的是每个客户不论购买了多少次商品,只需要统计出来一次,所以这个时候我们需要对返回的数组进行一次转换。
我们首先将数组转换成TRUE和FALSE,再将TRUE和FALSE转换成1和0,因为TRUE等于1,FALSE等于0,所以可以直接用--转换,而只要判断数组{4;5;4;5;0;0;1;0;0;0;0;0;1;0;0;0;0;0;0;0;0}是否大于0,就能将数组转换成TRUE和FALSE。
FREQUENCY(MATCH(E2:E21,E2:E21,0),ROW(1:20))>0的结果是:{TRUE;TRUE;TRUE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}
--(FREQUENCY(MATCH(E2:E21,E2:E21,0),ROW(1:20))>0)的结果是:
{1;1;1;1;0;0;1;0;0;0;0;0;1;0;0;0;0;0;0;0;0}
3、用SUMPRODUCT把它们加起来
现在就简单了,只要用SUMPRODUCT函数把第2步统计出来的数字加起来就是我们想要的结果,按CTRL+SHIFT+ENTER结束。
=SUMPRODUCT(--(FREQUENCY(MATCH(E2:E21,E2:E21,0),ROW(1:20))>0))
Excel函数组合持续更新中,如果对你有帮助,请关注点赞支持一下。