在Excel中返回数据当中的第N个最大值的方法是使用LARGE函数,其原型如下:
LARGE(array,k)
array是数据数组,k为求第k个最大值。
如下图所示数据,求出对应的第1个,第3个和第5个最大值
在使用过程中,如果给定的k<=0,或者k大于数据域中数据的个数,则该函数会返回 #NUM! 错误值
如果数据没有重复值的话,其返回的第k个最大值是没有问题的,但是如果数据中如果有重复的值,则可能返回的结果并非我们所认为的第k个最大值,因为该函数对于重复的值也会在次序上进行占位处理。也就是说如果某数据d在数据区域中重复2次的话,则返回的第n大和第n+1大值是相同的。
如下面的例子:
从图中可以看出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函数时就没有重复的值了。
具体结果如下:
从图中可以看出,不计重值列中没有重复值了。由于不计重复值后,第9大值和第10大值不存在,则返回#NUM!错误。
最后一列演示的是通过公式=IF(FREQUENCY(A2:A11, A2:A11),A2:A11)计算的中间结果,以便更清晰的知道这种方法执行的过程。
当然,使用LARGE函数求第k大值时不计重复值的实现还有其它方法,等待本站以后进行更新。
新闻热点
疑难解答