2017-08-16 105 views
1

我有一個錦標賽電子表格,其中列有「D」列(20到150個條目)和每個人被分配到的表號(列「E」)。Excel - 高級排序功能

See here...

在列「I」,我有一個創建(該信息從一個事件變化到另一個)中的每個表格可用席位數的列表的荒謬公式。

列「G」是我的問題。我想遍歷列「E」的內容,並且任何時候在列「E」中有與列「I」的內容相匹配的值,以給出列「D」的內容。

See here...

這裏是我的公式,因爲它目前矗立在小區G3:

{=IFERROR(INDEX(D$3:D$150,SMALL(IF(E$3:E$150=I3,ROW(E$3:E$150)-ROW(E$3)+1),ROWS(E$3:E3))),"")} 

的公式完全適用於在列「E」的所有值,只要值列「E」是1.這個公式在Google表格中運行得非常好,但Excel似乎以不同的方式處理這些範圍。我已經嘗試過使用標準公式和數組公式,但沒有成功。

任何意見將不勝感激。

另外還有一點需要注意的是,如果需要,我可以使用VBA,但我更願意堅持使用函數。

回答

0

enter image description here

在這個例子中我用下面的公式:

=INDEX($C$14:$C$25,AGGREGATE(15,6,(ROW($D$14:$D$25)-ROW($D$14)+1)/($D$14:$D$25=H16),COUNTIF($H$16:H16,H16)),1) 

您將需要調整的範圍,以滿足您的需求。

0

從我的測試中,問題似乎與ROWS(E$3:E3)作爲SMALL函數的第二個參數。基本上,當你回到第12行的前兩個時,你會問D函數中D的第10個最小值,它在E列中有2個。因爲它看起來像只有8個玩家,所以它永遠不會找到任何東西。

嘗試更改ROWS(E$3:E3)COUNTIF(I$3:I3, I3)

這將計算你已經在第一列中通過了多少個1或2,所以當你到達2時,它應該重置並要求第一個最小。

0

@Forward Ed。感謝您的輸入。這幫助我走上了我需要的道路。

這裏是最終爲我工作下式:

{= IFERROR(INDEX(d $ 3:d $ 150 SMALL(IF(E $ 3:E $ 150 = I3,ROW(E $ 3:E $ 150 )-MIN(ROW(E $ 3:E $ 150))+ 1),J3)),「」)}