暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Excel公式技巧89:使用FREQUENCY函数统计不同值、唯一值和连续值(下)

完美Excel 2021-06-05
1439

学习Excel技术,关注微信公众号:

excelperfect

本文接上一篇:Excel公式技巧88:使用FREQUENCY函数统计不同值、唯一值和连续值(上)


统计满足条件的不同值

如下图5所示,想要得到与列A中字母b相对应的列B中的不同值的数量。

5

 

很显然,对应于字母b的不同值为2aa3,共3个。使用数组公式:

=SUM(--(FREQUENCY(IF((A4:A12=D4)*(B4:B12<>""),MATCH("~"&B4:B12,B4:B12&"",0)),ROW(B4:B12)-ROW(B4)+1)>0))

 

这个公式与上面所讲公式的不同点在于,添加了一个AND条件,通过在公式中添加(A4:A12=D4)*来实现。

 

统计满足条件的唯一值

这个示例与上例相似,只是统计与字母b相对应的唯一值的数量。

6

 

很显然,与字母b相对应的行中仅2aa3出现1次,因此共有3个唯一值。使用数组公式:

=SUM(--(FREQUENCY(IF((A4:A12=D4)*(B4:B12<>""),MATCH("~"&B4:B12,B4:B12&"",0)),ROW(B4:B12)-ROW(B4)+1)=1))

 

除了将>0修改为=1外,这个公式与上例中的公式相同。因为我们仅想得到只出现1次的数值的数量。

 

最大出现的次数

如果想从列表中获取给定值的出现次数,那么可以使用COUNTIF函数。但是如果我们想获得出现最多的值的次数怎么办?

 

仅数值

如下图7所示,列表中数值1出现了4次,是出现次数最多的数值。

7

 

使用公式:

=MAX(FREQUENCY(B4:B12,B4:B12))

 

公式解析为:

=MAX({4;3;1;0;1;0;0;0;0;0})

得到结果:

4

 

文本和/或数值

如下图8所示,出现次数最多的是“aa”和“3”,各出现了2次。

8

 

使用数组公式:

=MAX(FREQUENCY(IF(B4:B12<>"",MATCH("~"&B4:B12,B4:B12&"",0)),ROW(B4:B12)-ROW(B4)+1))

 

最小出现的次数

获得最小出现次数不像获得最大出现次数那么简单,因为FREQUENCY函数对于重复值在数组中返回 0,但我们实际上想要忽略它。

 

仅数值

如下图9所示,数值37仅出现了1次,因此最小出现的次数应该是1

9

 

使用数组公式:

=MIN(IF(FREQUENCY(B4:B12,B4:B12)>0,FREQUENCY(B4:B12,B4:B12)))

 

公式中,通过>0来解决了FREQUENCY函数针对重复值返回0的问题。公式可以解析为:

=MIN(IF({4;3;1;0;1;0;0;0;0;0}>0,{4;3;1;0;1;0;0;0;0;0}))

进一步解析为:

=MIN({1;1;2;FALSE;1;FALSE;1;2;FALSE;FALSE})

返回结果:

1

 

注意,MIN函数忽略逻辑值。

 

文本和/或数值

如下图10所示,“1”、“2”、“e”和“b”仅出现了1次,因此出现次数最小值是1

10

 

使用数组公式:

=MIN(IF(FREQUENCY(IF(B4:B12<>"",MATCH("~"&B4:B12,B4:B12&"",0)),ROW(B4:B12)-ROW(B4)+1),FREQUENCY(IF(B4:B12<>"",MATCH("~"&B4:B12,B4:B12&"",0)),ROW(B4:B12)-ROW(B4)+1)))

 

公式可解析为:

=MIN(IF(FREQUENCY({1;2;3;3;5;FALSE;7;8;8},{1;2;3;4;5;6;7;8;9}),FREQUENCY({1;2;3;3;5;FALSE;7;8;8},{1;2;3;4;5;6;7;8;9})))

进一步解析为:

=MIN(IF({1;1;2;0;1;0;1;2;0;0},{1;1;2;0;1;0;1;2;0;0}))

即:

=MIN({1;1;2;FALSE;1;FALSE;1;2;FALSE;FALSE})

得到结果:

1

 

所给值最大连续出现的次数

如下图11所示,想要计算给定值1在列表中连续出现的最大次数。

11

 

使用数组公式:

=MAX(FREQUENCY(IF(B4:B12=D4,ROW(B4:B12)),IF(B4:B12<>D4,ROW(B4:B12))))

 

公式可解析为:

=MAX(FREQUENCY({4;FALSE;FALSE;7;FALSE;FALSE;FALSE;11;12},{FALSE;5;6;FALSE;8;9;10;FALSE;FALSE}))

进一步解析为:

=MAX({1;0;1;0;0;2})

得到结果:

2

 

小结

正如上文所见,一旦必须开始处理文本值,FREQUENCY公式就会变得更加复杂且速度变慢。当使用FREQUENCY函数的公式变得冗长、复杂和计算慢时,可以考虑使用VBA自定义函数。

 

你有一些FREQUENCY函数应用公式可以分享吗?

 

注:本文学习整理自colinlegg.wordpress.com,供有兴趣的朋友学习参考。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料。

文章转载自完美Excel,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论