当前所在位置: 首页 > 儿童教育 > 正文

FREQUENCY函数的精彩应用

2023-01-26 餐饮美食网 【 字体:

FREQUENCY函数以一列垂直数组返回一组数据的频率分布,在之前的文章中,我们详细解了该函数的基础语法及应用示例。下面,我们以示例解FREQUENCY函数的一些精彩应用。

示例1:统计不同数值的个数

如下图1所示的工作表,在单元格区域A1:A8中有一列数值,我们需要使用公式算出该区域中不同数值的个数。此时,可以使用公式:

=SUM(–(FREQUENCY(A1:A8,A1:A8)>0))

计算结果为5,如图1中的单元格D2所示。在列表中,不同的数值是1、3、5、6、7共5个。

图1

注意到,这个公式不是数组公式,但它在计算过程中能够生成数组。

首先,公式会转换成:

=SUM(–(FREQUENCY({1;1;3;5;6;3;1;7},{1;1;3;5;6;3;1;7})>0))

由于FREQUENCY函数对于重复的值统计的数为0,并且计数区间有8个,会产生9个统计数字。因此,上面的式子又被转换成:

=SUM(–({3;0;2;1;1;0;0;1;0}>0))

从上面式子中的数组可知,要统计的区域中有3个1,2个3,1个5,1个6,1个7。这个数组与0比较,生成逻辑值数组:

=SUM(–({TRUE;FALSE; TRUE; TRUE; TRUE; FALSE; FALSE; TRUE; FALSE}))

公式中的双减号将逻辑值转换成数字,其中TRUE转换成1,FALSE转换成0,得到:

=SUM({1;0;1;1;1;0;0;1;0})

求和得到结果5。

也可以使用SUMPRODUCT函数:

=SUMPRODUCT(–(FREQUENCY(A1:A8,A1:A8)>0))

获得同样的结果。

上面的例子中,统计的数值全部都是数字,如果单元格区域中除了数字外,还有文本呢?例如下图2所示的工作表,求单元格区域A1:A10中不同数值的个数。

图2

这里使用的是数组公式:

=SUM(–(FREQUENCY(IF(A1:A10<>””,MATCH(“~”& A1:A10,A1:A10 & “”,0)),ROW(A1:A10)-ROW(A1)+1)>0))

公式中,A1:A10<>””检查是否是空单元格以便忽略空单元格,得到数组:

{TRUE; TRUE; TRUE; TRUE; TRUE; TRUE; FALSE; TRUE; TRUE; TRUE}

在MATCH函数中的波浪号(~)用于预防单元格中起始字符为通配符的情况。如果你确定单元格中的值不会以通配符开始,那么可以使用””&代替”~”&。如果你确定单元格中的值都是文本,那么也不需要””&。注意,如果任何单元格中包含通配符(特别是*),那么公式可能失败。

在MATCH函数的参数lookup_array中通过使用&””将值强制转换为文本。如果单元格中的值都是文本,则可将其删除。

MATCH函数返回每个数值出现的位置:

{1;2;2;4;4;6;7;8;9;9}

那么,公式中IF函数转换为:

IF({TRUE; TRUE; TRUE; TRUE; TRUE; TRUE; FALSE; TRUE; TRUE; TRUE},{1;2;2;4;4;6;7;8;9;9})

结果为:

{1;2;2;4;4;6;FALSE;8;9;9}

FALSE值对应着空单元格。

公式中的ROW(A1:A10)-ROW(A1)+1)返回一个连续的整数值组成的数组:

{1;2;3;4;5;6;7;8;9;10}

此时,公式转换为:

=SUM(–(FREQUENCY({1;2;2;4;4;6;FALSE;8;9;9},{1;2;3;4;5;6;7;8;9;10})>0))

与前面的例子所一样,公式再转换为:

=SUM(–({1;2;0;2;0;1;0;1;2;0;0}>0))

式子评估为:

=SUM(–{TRUE;TRUE;FALSE;TRUE;FALSE;TRUE;FALSE;TRUE;TRUE;FALSE;FALSE})

得到:

=SUM({1;1;0;1;0;1;0;1;1;0;0})

最后得到结果:

6

示例2:统计不重复值的个数

不重复的值指单元格区域中只出现1次的值。例如,下图3所示的工作表,在单元格区域A1:A8中数值5、6、7只出现了1次,因此有3个不重复值。统计单元格区域A1:A8中不重复值个数的公式为:

=SUM(–(FREQUENCY(A1:A8,A1:A8)=1))

公式计算仅出现1次的值之和。

图3

如果要统计的单元格区域中不仅有数字,还有文本,如下图4所示,可以看出,不重复的值为1、s、c共3个。公式为:

=SUM(–(FREQUENCY(IF(A1:A10<>””,MATCH(“~”& A1:A10,A1:A10 & “”,0)),ROW(A1:A10)-ROW(A1)+1)=1))

这是一个数组公式。

图4

上述两个公式的详细过程参见示例1,本例中只是将示例1中的大于号改成了等于号。

示例3:统计满足条件的不同值的个数

如下图5所示,要统计单元格区域A1:A10中的内容是“是”对应的单元格B1:B10中不同值的个数,可以看出,这些值是1、2、a、3,共有4个不同值。公式为:

=SUM(–(FREQUENCY(IF((A1:A10=C2)*(B1:B10<>””),MATCH(“~”& B1:B10,B1:B10 & “”,0)),ROW(B1:B10)-ROW(B1)+1)>0))

这是一个数组公式。

图5

这个公式与上例中的公式相似,只是在公式中包含(A1:A10=C2)*从而添加了一个“与”条件。

示例4:统计满足条件的不重复值的个数

如下图6所示,要统计单元格区域A1:A10中的内容是“是”对应的单元格B1:B10中不重复值的个数,可以使用数组公式:

=SUM(–(FREQUENCY(IF((A1:A10=C2)*(B1:B10<>””),MATCH(“~”& B1:B10,B1:B10 & “”,0)),ROW(B1:B10)-ROW(B1)+1)=1))

图6

示例5:出现最多的数值出现的次数

如下图7所示,我们可以看出,在单元格区域A1:A10中1出现的次数最多,共出现了5次,使用下面的公式可以得到这个结果:

=MAX(FREQUENCY(A1:A10,A1:A10))

图7

公式中,FREQUENCY(A1:A10,A1:A10)返回{5;0;3;2;0;0;0;0;0;0;0},MAX函数从这个数组中返回最大值5。

如果单元格区域中不仅有数字还有文本,如何统计最多的数值出现的次数呢?如下图8所示,出现次数最多的是2、a、3,都是2次。

图8

数组公式为:

=MAX(FREQUENCY(IF(A1:A10<>””,MATCH(“~”& A1:A10,A1:A10 & “”,0)),ROW(A1:A10)-ROW(A1)+1))

示例6:出现最少的数值出现的次数

如下图9所示,要统计单元格区域A1:A10中出现最少的数值出现的次数,可以看出,出现最少的数值是3、5、6,都是1次。数组公式为:

=MIN(IF(FREQUENCY(A1:A10,A1:A10)>0,FREQUENCY(A1:A10,A1:A10)))

图9

因为要忽略数组中可能出现的0,因此公式比统计出现最多的数值出现的次数要复杂一些。

公式中FREQUENCY(A1:A10,A1:A10)返回{5;0;2;1;0;0;1;0;0;1;0},因此公式转换为:

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

接着,公式评估为:

=MIN({5;False;2;1;False;False;1;False;False;1;False})

由于MIN函数忽略逻辑值,因此返回值1。

正如前面的例子中一样,如果单元格区域中还包含文本呢?如下图10所示,单元格区域A1:A10中的1、s、c都只出现了1次,数组公式为:

=MIN(IF(FREQUENCY(IF(A1:A10<>””,MATCH(“~”& A1:A10,A1:A10 &””,0)),ROW(A1:A10)-ROW(A1)+1),FREQUENCY(IF(A1:A10<>””,MATCH(“~”& A1:A10,A1:A10 & “”,0)),ROW(A1:A10)-ROW(A1)+1)))

图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))))

图11

公式中,利用IF($A$1:$A$9<>B2,ROW($A$1:$A$9))生成统计区间,真是一个妙招!

示例8:计算非连续区域的满足某条件的平均值

如下图12所示,要计算三个超市水果销售量的平均值,但不能包括销售量为0的水果。

图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函数的基本特性,结合实际场景灵活运用,往往会为我们的实际应用提供一些巧妙的解决方案。

阅读全文
相关推荐

如何自制蛋挞

如何自制蛋挞
1、倒入低筋面、黄油和水,揉成面团状,藏一小时后取出,抹上黄油卷起,包上保鲜膜冷藏半小时。2、取出,将面团切成一厘米的面团,放入模具内,用力按压,中间稍薄,外缘要比模具高,将蛋挞液倒入蛋挞皮中,放入烤箱里烤30分钟即可。

肉火烧面怎么和面

肉火烧面怎么和面
1、首先用温水把酵母融开,加入面粉,用手把面粉揉成非常软的面团,可以放一点熬好的猪油在面团里面。2、然后放在温暖的地方,盖上保鲜膜发酵至2倍大,发好的面团用手插入不回缩,就说明面团发酵好了。

奶茶几分糖好喝

奶茶几分糖好喝
1、不同的人对奶茶的口感要求是不一样的,一般来说,奶茶有三分糖、五分糖、七分糖三种不同的口味。2、女生一般都喜欢喝甜一点的,而男生则喜欢喝不那么甜的,七分糖的奶茶最好喝。

过桥米线是哪里的?

过桥米线是哪里的?
过桥米线是来自云南省滇南地区的一种有名特色小吃。过桥米线最早是在清朝就已经出现,距离现在至少有一百多年的历史啦!起源于建水县东城外锁龙桥西侧的鸡市街头处,有建水的特产草芽、地椒作配料,风味独特而远近闻名。深受广大美食爱好者的喜欢,不少人为此专门长途跋涉,只为尝

面霜和乳液的区别

面霜和乳液的区别
面霜和乳液的区别,相较而言乳液的水分含量要比面霜高,乳液质地要轻薄一些,乳液主要作用是保湿,滋润可以隔离外界干燥的气候,面霜既可保湿,又可美白,还能抗衰老,乳液的吸收快一些,而面霜吸收比较慢一些,因为液体的吸收速度都比较快。

怎么摘隐形眼镜

怎么摘隐形眼镜
在摘隐形眼镜之前,先用洗手液将手清洗干净,以免将细菌带入眼睛内,对着镜子,用右手中指轻拉眼睛下眼睑,左手中指轻拉眼睛上眼睑,让黑色眼球暴露在空气中,用右手食指和拇指轻触镜片的两边缘部分,向中间推使镜片拱起,再用两手指轻轻捏出镜片即可。

粉饼和散粉的区别

粉饼和散粉的区别
粉饼是呈压缩固体状态,多呈圆形或者方形,散粉则是细腻的粉末状,粉饼遮瑕力会比较强一些,可以湿用做粉底,或者用来补妆,而散粉则是定妆的效果,粉饼通常用在底妆的第一步,而散粉通常用在底妆最后一步。

冷烫和热烫的区别

冷烫和热烫的区别
冷烫和热烫的区别:冷烫对头发的要求是要在保温状态下才能给卷有个好的效果,而热烫是在干和湿的情况下都行,热烫烫出来的头发比较自然明显而有弹力,冷烫的头发风干后基本看不出来,并且发质会有点干。

高品质香水如何鉴别?用三步就可以解决

高品质香水如何鉴别?用三步就可以解决
1、看色泽以天然香料调制而成的高级香水,都有它本来的颜色,且大都是琥珀色或褐色,看起来很像宝石,比如,从茉莉、玫瑰或水仙等天然鲜花中所萃取的精油都呈黄色、褐白或绿褐色;此外,香水中所添加的魅惑香气物性香料也是褐色,苔类中的橡树苔是绿色,从树根或树根脂类中萃取的

如何去除黑眼圈

如何去除黑眼圈
去除黑眼圈首先可以用热毛巾敷眼,然后再用冷毛巾敷,十分钟就能让黑眼圈淡化的不那么严重,其次将去壳后的鸡蛋用无菌纱布包裹住,敷于眼部轻轻转动,可以急救去除黑眼圈,另外抹完眼霜后,用双手顺时针按摩,可以促进血液循环消除黑眼圈。
本文Tag