2012-07-21 50 views
2

給定一個包含三列(類似於this)的Excel文件:Group,Number和Rank。Excel列中的排名值

在每個組中,他必須將數值從最小到最大排列。如果這些值匹配,他們會得到相同的排名。所以如果一個值最大,那麼排名將是1.如果它是第二大的,排名將是2等等。

然後,此過程應重新啓動第二組值。這項任務如何完成?也許使用數組/冒泡排序? —但我不確定這是正確的方法。

+0

我剛剛發現的Excel的= RANK()功能。 ..這使得爲一個給定的組排序一組數字非常容易...但是我怎樣才能自動地繼續處理每個其他組的數據? – MonuMan5 2012-07-21 02:42:21

+0

看看這個:http://www.mrexcel.com/forum/showthread.php?343375-Rank-based-on-multiple-columns – codechurn 2012-07-21 02:56:03

+0

我找到了某種答案... = SUMPRODUCT(($ A $ 2:$ B $ 21 = A2)*($ B $ 2:$ B $ 21> B2))+ 1 問題是......它不會計算匹配。對於比賽,它應該將它們排列爲第二和第二,然後按照下一個排名排序。所以...排名可能是像1,1,2,3,3,4,5 ......類似的東西。如果這是有道理的 – MonuMan5 2012-07-21 04:14:30

回答

1

我想我有你正在尋找的解決方案 - 我不得不在三欄中做。

假設你有A組中的組和B組中的分數;你將首先按組進行排序,然後按比分進行排序。

然後你會想繼續前進,把前面提到的公式列C2:

=SUMPRODUCT(($A$2:$B$25=A2)*($B$2:$B$25>B2))+1 

然後自動填寫了下來。

那麼你會希望把一個櫃檯在D2單元格:

=IF(COUNTIFS($A$2:A2,A2,$B$2:B2,B2)=1,0,1) 

然後自動填寫了下來。

那麼你會希望把這個公式單元格E2:

=IF(C2<>C1,C2-SUMIF($A$2:A2,A2,$D$2:$D$25),C2) 

然後自動填寫了下來。

有可能是一個更簡單/更好的方式來做到這一點 - 但這絕對會給你你在找什麼:

Ranking Solution

+0

我想讓它工作得很糟糕......出於某種原因,我的計數器一直顯示爲零。你能告訴我在一個給你一個單元格的公式中會有什麼公式嗎?也許它不是自動填充正確。 – MonuMan5 2012-07-25 18:26:30

+0

它的工作原理!謝謝你,先生! – MonuMan5 2012-07-26 00:56:51

0

我有一個額外的列解決您的問題:

在「C」柱,你必須有指定的組數頻率的倒數,用這個公式(假設值從第2行到行10):

=1/SUM(IF(($A$2:$A$10=A2)*($B$2:$B$10=B2);1;0)) 

然後在下一列(d)你可以拿到名次,你需要通過使用C求和值:

=SUM(IF(($B$2:$B$10>B2)*($A$2:$A$10=A2);$C$2:$C$10;0))+1 

兩個公式是數組公式(公式? ),在Excel中輸入時需要按Shift + Ctrl + Enter。

Formatted as a table

如果格式化數據作爲一個表,你可以使用(在Excel 2010中)以下公式:

=1/SUM(IF(([Group]=[@Group])*([Number]=[@Number]);1;0)) 
=SUM(IF(([Number]>[@Number])*([Group]=[@Group]);[Freq];0))+1 

(根據您的設置,您可能需要更換分號)

+0

第一部分不起作用。我收到一條消息,說公式包含錯誤。 – MonuMan5 2012-07-21 23:23:01

+0

你使用小數點或逗號嗎?如果是前者,則替換分號';'在我的答案中用逗號','。我加倍檢查,公式起作用。 – martin 2012-07-25 16:33:49

+0

我把分號改爲逗號,它不再給我一個錯誤。但它也不會提供正確的答案。我將在後面發佈我的屏幕截圖。 =/ – MonuMan5 2012-07-25 18:27:50

0

(剛剛注意到你的評論,但已經寫了下面所以可能會上傳它,因爲它可能對這個問題的未來觀衆有用)

=SUMPRODUCT(($A$2:$A$18=A2)*($B$2:$B$18>B2))+1

enter image description here

+0

呃...非常非常有趣。當我使用該公式...它不匹配關係的記錄。它只是繼續下去。 – MonuMan5 2012-07-21 23:18:56

+0

奇怪 - 你可以從截圖中看到它在我的xl上做了什麼 – whytheq 2012-07-22 13:38:18

0

我做了一個自定義排序與排序是該組列的第一級(從小到大)和排序是值列第二級(最大到最小)。然後在排名欄中我使用公式

=IF(B2=B1,C1,COUNTIF($A$2:A2,A2)) 

其中A2是第一行。然後我一直拖下去。

這給你的排名PLUS一切都在屏幕上視覺排序,因爲當你完成。