ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E文精选 > 函数与公式 > Prob函数区域数组用法示例

Prob函数区域数组用法示例

作者:绿色风 分类: 时间:2022-08-17 浏览:178
楼主
w83365040371



Prob是一个求区域中的数值落在指定区间内的概率的函数. 可以将这个函数的功能扩展,用来求区域中的数值在指定区间内的个数.

那么,Prob函数就跟函数Frequency、Countif、Countifs函数具有相似的功能. 而且相比Frequency函数,Prob函数可以直接进行累计求和;相比Countif、Countifs函数,Prob的引用区域可以是经过处理的数组,而不仅仅是单元格区域....

下面的链接,是利用Prob函数进行条件求和的帖子,这次我们将介绍Prob函数的区域数组用法....



问题1:统计分数段中的人员个数,如下图所示


图1.

 

图2.

 
注释:60的意思是,大于0小于等于60;80的意思是大于60小于等于80

A:

我们一般解决此类问题用的是frequency函数,
  1. =FREQUENCY(D4:D52,F5:F9)
利用函数Prob也可以达到与函数frequency相同的效果,公式如下,结果见图3.

公式1.
  1. =PROB(D4:D52,1^ROW(1:49)/49,TEXT(F4:F8,"0;;;!0")+1,F5:F9)*49
图3.

 

在解决问题1.时,我们看到prob函数没有比frequecy函数简便,反而有点复杂,那么我们限制条件,要求累计统计区间人员个数


如下图所示,要累计统计人员个数
备注:60的意思是,大于0小于等于60;80的意思是,大于0小于等于80

图4.

 

依题目要求,使用区域数组的公式为,结果见图5.
公式2.
  1. =PROB(D4:D52,1^ROW(1:49)/49,,F5:F9)*49


Frequency函数只有跟mmult函数结合,才能进行累计统计,当然在这里还有个比Prob函数跟简单的countif函数....,那么让我们来看问题2

图5.

 

问题2.统计各小组中区间分数个数,如下图所示图6.
图6.

 
注释:60的意思是,大于0小于等于60;80的意思是大于60小于等于80

A:

用区域数组的方法,不能简单的使用Frequency函数返回我们想要的结果,在这里,我们用了Prob函数,见公式3.
公式3.
  1. =PROB(MATCH(B4:B52,G12:H12,)/1%%+D4:D52,ROW(1:49)^0/49,TEXT(F12:F16,"0;;;!0")+{1,2}*10^4+1,F13:F17+{1,2}*10^4)*49

在这里,我们将两个小组数字化,即{"天罡","地煞"}转换为{1,2},对原始数据进行加工
MATCH(B4:B52,G12:H12,)/1%%+D4:D52
那么只有对图6中的区间段转换,即+{1,2}*10^4,才是用Prob函数真正使用的区间段....

我们可以看到,Prob函数处理这个问题有点麻烦,有个更方便的函数Countifs可以使用,但是Countifs只返回小组内的累计统计,不能返回小组间的累计统计,让我们看下这个问题的扩展...

如图7.的右半图所示,地煞小组中的<=60的分数段是要累计上天罡小组中的总人数
对于这个问题,Prob函数就发挥出其简便的作用,具体公式见公式4.
公式4.
  1. =PROB(MATCH(B4:B52,G12:H12,)/1%%+D4:D52,ROW(1:49)^0/49,,F13:F17+{1,2}*10^4)*49

公式3.和公式4的结果见图7.


图7.

 

由公式4.我们可以引出一个具体的稍微复杂的问题:问题3


问题3.在两组中随机挑选出一名分数大于90的人员


图8.

 

首先,我们要对原始数据进行处理,对每个分数>90的数据加上一个随机数,具体的操作过程见链接
http://www.exceltip.net/thread-29699-1-1.html
,公式见公式5.
公式5.
  1. =IF(D4:D52>90,MATCH(B4:B52,{"天罡","地煞"},)/1%%+RANDBETWEEN(1,99+0*ROW(4:52))/1%+ROW(4:52),9^7)
图9.

 

备注:在图9.中绿色背景的为符合条件的已经加了随机数字的单元格数值

现在我们已经生成了含有随机数字的数组,要在符合条件的数据中用small函数每组挑选一个,那么,接下来的问题就是,small函数的第二参数是怎么确定



由于每个小组中符合条件的数据被挑中的概率都是一样的,即小组中的第一个和最后一个的概率也是一样的,那么就要用公式统计出每个小组符合条件的人员的个数,即小组中的最后一名,并累计相加....

根据这一要求,我们用Prob函数对符合条件的小组成员个数,进行累计统计,见公式6.
公式6.
  1. PROB(IF(D4:D52>90,MATCH(B4:B52,{"天罡";"地煞"},),4),ROW(4:52)^0/49,,{1;2})*49


得到的结果是{18,25},即小组天罡中满足条件的最后一位人员
在公式5.中返回的数组中的排名是18,而地煞的排名是25

最后我们将这两个函数嵌套起来,就能够得到我们想要的结果
公式7.
  1. =INDEX(A:D,RIGHT(SMALL(IF(D4:D52>90,MATCH(B4:B52,{"天罡","地煞"},)/1%%+RANDBETWEEN(1,99+0*ROW(4:52))/1%+ROW(4:52),9^7),PROB(IF(D4:D52>90,MATCH(B4:B52,{"天罡";"地煞"},),4),ROW(4:52)^0/49,,{1;2})*49),2),{1,2,3,4})

总结:
Prob函数相比其他函数,在
累计统计和非单元格引用方面占有优势....


延伸问题:图8.中的数据在生成的时候以考号自动排序?


Prob.rar


2楼
天南地北
醋醋提出的问题解决了吗?
3楼
w83365040371
哦,半瓶提出的问题是prob(x_range,prob_range,,)中的prob_range中出现负数,函数结果会返回错误,
但是在实际应用中,Prob_range 很少会碰到出现负数的问题

而且这次,是统计符合条件的单元格个数,应用prob函数是没有问题的

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap