首页 > 工具 > Excel > 正文

Excel中返回第2大或第N个最大值的方法

2023-05-17 12:08:05
字体:
来源:转载
供稿:网友

在Excel中返回数据当中的第N个最大值的方法是使用LARGE函数,其原型如下:

LARGE(array,k)

array是数据数组,k为求第k个最大值。

如下图所示数据,求出对应的第1个,第3个和第5个最大值

Excel中求第n个最大值

在使用过程中,如果给定的k<=0,或者k大于数据域中数据的个数,则该函数会返回 #NUM! 错误值

如果数据没有重复值的话,其返回的第k个最大值是没有问题的,但是如果数据中如果有重复的值,则可能返回的结果并非我们所认为的第k个最大值,因为该函数对于重复的值也会在次序上进行占位处理。也就是说如果某数据d在数据区域中重复2次的话,则返回的第n大和第n+1大值是相同的。

如下面的例子:

LARGE函数

从图中可以看出83和87有两个重复值,这样第6大值和第7大值是相同的,第9大值和第10大值是相同的。

有时,我们想去除重复值,怎么办呢?

我们可以借助Frequency函数和IF函数来实现,关于Frequency函数的使用,可以参见本站中的另外两篇文章:

(1)Excel中frequency()函数的使用方法

(2)Excel中frequency()函数的进一步讲解

如上例中,求第7大值,可以输入如下的公式:

=LARGE(IF(FREQUENCY(A2:A11, A2:A11), A2:A11), 7)

输入完后,按Ctrl + Shift + Enter完成,计算结果为:86

其执行原理如下:

(1)Frequency函数统计每个数值出现的频次,因为该函数对于重复值,只在第一次出现时给出频次结果,第2次显示为0。

(2)IF函数根据频次显示对应数据域中的对应数据值,IF函数第一个参数是逻辑判断,当为0时,视为假(FALSE),否则为真(TRUE)。IF函数的第2个参数是当第一个参数为真(TRUE)时,输出的结果。在这里,IF函数第一个参数是FREQUENCY函数统计的频次,如果是非0值,则返回数据区域对应位置上的数据值,否则输出FALSE。(注意:这里所谓的对应位置上的值是指A2:A11中依次顺序的值)

(3)上一步中实质上是将后面与前面重复的值在函数中变成了FALSE,这样再使用LARGE函数时就没有重复的值了。

具体结果如下:

Large函数不计重复值

从图中可以看出,不计重值列中没有重复值了。由于不计重复值后,第9大值和第10大值不存在,则返回#NUM!错误。

最后一列演示的是通过公式=IF(FREQUENCY(A2:A11, A2:A11),A2:A11)计算的中间结果,以便更清晰的知道这种方法执行的过程。

当然,使用LARGE函数求第k大值时不计重复值的实现还有其它方法,等待本站以后进行更新。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表