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

统计满足条件的不同值

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

图5

很显然,对应于字母b的不同值为2、aa和3,共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相对应的行中仅2、aa和3出现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所示,数值3和7仅出现了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,供有兴趣的朋友学习参考。

(0)

相关推荐