開學之初而已,就有同仁問到在 Excel 中,關於名次計算的問題。參考下圖,一般在計算名次時,可能會有這樣的狀況:
1. 名次重覆跳過:例如有 2 個第 4 名,所以沒有第 5 名。
2. 名次重覆不跳過:例如有 2 個第 4 名,原來的第 6 名成為第 5 名。
3. 名次不重覆:例如有 2 個第 4 名,會隨機產生一個第 4 名,另一個為第 5 名。
【公式設計與解析】
依上圖,選取儲存格A1:A24,按 Ctrl+Shift+F3 鍵,勾選「頂端列」,定義名稱:數值。使用相同方法,將E欄中有資料的儲存格,定義名稱:輔助欄。
1. 名次重覆跳過
儲存格B2:=RANK(A2,數值)
使用 RANK 函數是最通用的計算排名工具。再提供以下三種方式,都能達到相同的排名結果。
(1) 儲存格B2:=COUNTIF(數值,">"&A2)+1
使用 COUNTIF 函數計算在數值陣列中,大於儲存格A2的有幾個,然後再加 1。
(2) 儲存格B2:=SUMPRODUCT(--(數值>A2))+1
在 SUMPRODUCT 函數中找出數值是否大於儲存格A2的 TRUE/FALSE 陣列,利用『--』運算,將 TRUE/FALSE 陣列轉換為 1/0 陣列,再由 SUMPRODUCT 函數執行『乘積和』運算。最後再加 1,即為所求。
(3) 儲存格B2:{=SUM(IF(數值>A2,1,0))+1}
這是陣列公式,輸入完成要按 Ctrl+Shift+Enter 鍵,Excel 自動產生「{}」。
SUM(IF(數值>A2,1,0)) 的計算原理同 SUMPRODUCT(--(數值>A2))。
2. 名次重覆不跳過
儲存格C2:=SUMPRODUCT((數值>A2)*(1/COUNTIF(數值,數值)))+1
1/COUNTIF(數值,數值):藉由 COUNTIF 函數,找出每個名次出現的次數,1/COUNTIF 的用意是將計算後的次數加以倒數,例如:某一名次有 3 人,則 1/COUNTIF 為 0.333333,某一名次有 4 人,則 1/COUNTIF 為 0.25。透過 SUMPRODUCT 函數加總運算後,結果均會為 1。
(數值>A2)*(1/COUNTIF(數值,數值)):找出大於儲存格A2者,再運算 1/COUNTIF 的部分。其中『*』運算,相當於執行邏輯 AND 運算。
3. 名次不重覆
儲存格E2:=A2+RAND()
儲存格D2:=RANK(E2,輔助欄)
藉由輔助欄位將A欄中的每個儲存格加上一個亂數(介於0和1之間的數),然後再置入 RANK 函數中加以排序,如此得到的結果,會是隨機讓同名次者,分出大小。

您好, 我想要統計每位同仁(A欄位-有合併儲存格-共10人) 每日(放在欄位C4~AC4) 賣出A產品~E產品(放在列位B5~B9/B10~B14/B15~B19/…B50~B54)的數量, A產品~E產品有本月賣出小計加總(AD5/AD6…AD54),再合併儲存格加總每位同仁本月共賣出的總數量(儲存格AF5/AF10/AF15…AF50),排名次(名次重覆不跳過)計算於AE5/AE10…AE50儲存格, 於賣出數量之儲存格輸入數值時,有時排名次之儲存格有時會出現#DIV/0!錯誤,如發生錯誤時,某些欄位值刪除再輸入別的欄位又不會出現#DIV/0!錯誤?? 我查了好久還是查不出原因為何??可以請您協助看我哪裡公式有錯誤嗎?謝謝! 排名次之公式如下: 我有設定「頂端列」,定義名稱:數值 =SUMPRODUCT((員工合計>AF5)*(1/COUNTIF(員工合計,員工合計)))+1 =SUMPRODUCT((員工合計>AF10)*(1/COUNTIF(員工合計,員工合計)))+1 10位同仁的排名公式以此類推…
請問我於 「隊號(亂數定號)」工作表中,無法按照「隊號」、「最終值」排序。 不知是那裡出問題? 「隊號」、「最終值」似乎會變,非一定值。 之前開啟時,尚有「循環參照」之問題,現在似乎沒有了。 但一直無法按「隊號」、「最終值」排序。相當困擾我。 謝謝! ★108年草屯『太清宮盃』中部團體象棋比賽(A3版-團體賽-18隊-1.02-發問版).xlsm https://drive.google.com/file/d/1Go8fL6CTPzqxDg2ODXO3lf8dXzSZbKra/view?usp=sharing