FREQUENCY函数的精彩应用( 三 )


FREQUENCY函数的精彩应用


图10
示例7:指定值连续出现的最大次数
如下图11所示,想要求出单元格B2中指定的值1在单元格区域A1:A10中连续出现的最大次数,可以使用数组公式:
=MAX(FREQUENCY(IF($A$1:$A$9=B2,ROW($A$1:$A$9)),IF($A$1:$A$9<>B2,ROW($A$1:$A$9))))
FREQUENCY函数的精彩应用


图11
公式中,利用IF($A$1:$A$9<>B2,ROW($A$1:$A$9))生成统计区间,真是一个妙招!
示例8:计算非连续区域的满足某条件的平均值
如下图12所示,要计算三个超市水果销售量的平均值,但不能包括销售量为0的水果 。
FREQUENCY函数的精彩应用


图12
由于示例数据较少,我们可以手算出平均值:
(50+38+68+21+15+21+19+25)/8=32.125
通常想到的是使用AVERAGEIF函数求条件平均值,但是示例数据在三个不连续的区域,下面的公式:
=AVERAGEIF((C3:C7,E3:E7,G3:G7),”<>0″)
返回#VALUE!,因为AVERAGEIF函数不能处理非连续区域 。
使用SUM函数和COUNT函数相结合呢?
=SUM(C3:C7,E3:E7,G3:G7)/COUNT(C3:C7,E3:E7,G3:G7)
结果是17.133,因为COUNT函数将0值单元格也统计了 。
使用COUNTIF函数代替COUNT函数忽略0值单元格:
=SUM(C3:C7,E3:E7,G3:G7)/COUNTIF((C3:C7,E3:E7,G3:G7),”<>0″)
返回#VALUE!,因为COUNTIF函数不能用于非连续区域 。
以上公式都不得到正确的结果,因为不能够获得这些非连续单元格区域中非零值的个数 。可以使用FREQUENCY函数来解决,公式为:
=SUM(C3:C7,E3:E7,G3:G7)/INDEX(FREQUENCY((C3:C7,E3:E7,G3:G7),0),2)
FREQUENCY函数可用于非连续单元格区域,FREQUENCY((C3:C7,E3:E7,G3:G7),0)返回包含两个值的数组:
{7;8}
即非连续单元格区域数值组成的数组中等于0的个数以及大于0的个数 。
传递给INDEX函数:
INDEX({7;8},2)
得到结果8,即为非连续单元格区域中大于0的个数 。
结语
【FREQUENCY函数的精彩应用】充分利用FREQUENCY函数的基本特性,结合实际场景灵活运用,往往会为我们的实际应用提供一些巧妙的解决方案 。

猜你喜欢