2009-08-28 51 views
4

我有一個有分數的人的表格。越多點,你的位置就越高。如果你有相同點,你是相等的第一,第二等Excel公式獲取排名位置

    |一個          |乙            | C
1 |     | 職位 |
2 | person1 | 1             | 10
3 | person2 | 2             | 9
4 | person3 | 2             | 9
5 | person4 | 2             | 9
6 | person5 | 5             | 8
7 | person6 | 6             | 7

使用Excel公式,我怎樣才能自動地確定的位置?我目前使用的IF語句適用於5或6個匹配位置,但由於公式限制,我無法添加30+條語句。

=IF(C7=C2,B2,IF(C7=C3,B2+5,IF(C7=C4,B3+4,.... 

因此,如果分列上述相同位置則是相同的位置值。如果分數小於上面那麼它會下降一個位置,所以上一行的位置爲+1。但是如果上面那一行是相同的,那麼它就是之前的位置+2,依此類推。

回答

16

您也可以使用RANK函數

=RANK(C2,$C$2:$C$7,0) 

這將返回數據如您例如:

| A  | B  | C 
1 | name | position | points 
2 | person1 | 1  | 10 
3 | person2 | 2  | 9 
4 | person3 | 2  | 9 
5 | person4 | 2  | 9 
6 | person5 | 5  | 8 
7 | person6 | 6  | 7 

的「點」列需要進行排序降序排列。

2

類型這B3,然後將其拉到行的其餘部分:

=IF(C3=C2,B2,B2+COUNTIF($C$1:$C3,C2)) 

它所做的是:

  • 如果我的積分等於先前的點,我也有同樣位置。
  • 不計算與前一個相同分數的玩家,並將他們的數字添加到前一個玩家的位置。
+0

完美。其他建議需要添加其他列,如果他們工作,這是正確的。 COUNTIF()需要延長時間以獲得更好的範圍,否則就會出現。謝謝。 –

0

如果您的C列已排序,您可以檢查當前行是否等於您的最後一行。如果沒有,使用當前行號作爲排序位置,否則從上面(對於B3值)使用的值:

= IF(C3 = C2,B2,ROW() - 1)

您可以使用大型函數獲取的情況下,你的C柱未排序的第n個最高值:

= LARGE(C2:C7,3)

0

在第四列試試這個

=COUNTIF(B:B; ">" & B2) + 1 

用B3替換B2用於下一個ro w等等。

它的作用是統計有多少記錄有多個點,然後是當前記錄,然後增加當前記錄位置(+1部分)。

0

的方式我這樣做,這是一種位繞口,如下:以降序

  • 創建一個附加列(d)由點

    1. 排序行開始在D2與數字1,2,3,...位置總數
    2. 在單元格中爲實際位置(D2)使用公式if(C2 = C1),D2,C1)。這將檢查此行中的點是否與上一行中的點相同。如果它給了你前一行的位置,否則它使用D列中的值,從而處理具有相同位置的人。
    3. 複製這個公式向下整列
    4. 複製的位置柱(C),然後粘貼特殊>>值覆蓋與位置
    5. 度假村行到原來的順序

    這是公式爲我工作!如果有更好的方法,我很想知道它!

  • 0

    您可以在Excel中使用RANK函數,而不必對數據進行排序。 Type = RANK(C2,$ C $ 2:$ C $ 7)。 Excel將在C2中找到數據的相對位置並顯示答案。通過拖動單元格光標右端的小節點將公式複製到C7。

    +0

    Elkannah Whettey答案非常好。 如果未對數據進行排序,並且點數越低,表示位置越高,則使用Elkannah Whettey提供的解決方案。但是從1加上條目數量中扣除RANK。 = 7-RANK(C2,$ C $ 2:$ C $ 7)。 – user2922610