在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大值時不計重復值的實現還有其它方法,等待本站以后進行更新。
新聞熱點
疑難解答