2016-09-21 50 views
4

我一直在研究我的情況相當多,無論是在本網站和其他人,這個是最接近我的問題/解決方案:如何使用索引來查找所有的值大於

Find all values greater or equal than a certain value

但是,在我的情況下使用該解決方案不會給我正確的結果。我列出了83個名字,每個名字都有處罰。在一個單獨的選項卡上,我想顯示所有具有任何罰分(> 0)的名稱的輸出。
我只有四種可能的處罰,所以如果我需要引用它們的公式(匹配或查找)中,這將是罰款也。縮短和dummying數據,這裏是什麼,我有例如:使用這個公式,然後CSE並拖累

+----------+---------+ 
| Name | Penalty | 
+----------+---------+ 
| Name 1 | 0 | 
| Name 2 | 0 | 
| Name 3 | 5 | 
| Name 4 | 0 | 
| Name 5 | 0 | 
| Name 6 | 10 | 
| Name 7 | 0 | 
| Name 8 | 0 | 
| Name 9 | 0 | 
| Name 10 | 20 | 
+----------+---------+ 

=INDEX($R$4:$R$13,SMALL(IF($S$4:$S$13>0,ROW($S$4:$S$13)),ROW(1:1))) 

它給我的結果:

+---------+ 
| Name 6 | 
| Name 9 | 
| #REF! | 
| #NUM! | 
| #NUM! | 
| #NUM! | 
| #NUM! | 
| #NUM! | 
| #NUM! | 
| #NUM! | 
+---------+ 

我會通過使用IFERROR,使他們坯料照顧的錯誤,但它仍然無法與扣分> 0

找到那些正確的名稱

編輯:改變過去的「行」的一部分給了我不同的答案,所以我想我的問題在於有莫名其妙,但我還是不知道該怎麼辦。這應該是「小」功能的「k」值。

任何幫助,非常感謝。謝謝!

+1

只需將'INDEX'中的'$ R $ 4:$ R $ 13'更改爲'$ R:$ R'。這是因爲你的Small獲得了'ROW($ S $ 4:$ S $ 13)'的值,所以第一個入口將是4,但是INDEX($ R $ 4:$ R $ 13,4)將是R7而不是R4。但使用'INDEX($ R:$ R,4)'將輸出R4,這是正確的;) –

+0

該解決方案工作!謝謝! – Brian

回答

4

我更喜歡使用MATCH(),而不是小():

=INDEX($R$4:$R$13,MATCH(1,($S$4:$S$13>0)*(COUNTIF($U$3:U3,$R$4:$R$13)=0),0)) 

它是一個數組公式,以便使用Ctrl-Shift鍵輸入。

也在該公式需要它至少與COUNTIF需要參照所述單元上方,以避免循環引用開始的第二行。

enter image description here


如果你真的想用小(),那麼你需要做的起始行的調整:

=INDEX($R$4:$R$13,SMALL(IF($S$4:$S$13>0,ROW($S$4:$S$13)-ROW($S$4)+1),ROW(1:1))) 

或者作爲@dirk指出陣列部分SMALL()不是INDEX,因此可以使用INDEX部分中的全列並按原樣使用SMALL,因爲它將返回實際的行號:

=INDEX($R:$R$,SMALL(IF($S$4:$S$13>0,ROW($S$4:$S$13)),ROW(1:1))) 

另外一個數組公式,用Ctrl-Shift-Enter確認。

enter image description here

的另一種方法是使用其中沒有輸入CSE作爲一個正常的公式AGGREGATE:

=INDEX($R:$R,AGGREGATE(15,6,ROW($R$4:$R$13)/($S$4:$S$13>0),ROW(1:1)) 

這被輸入在作爲常規公式。它仍然是一個數組類型的公式,所以仍然需要僅使用數據集作爲參考,並避免在公式的數組部分中引用完整的列引用。

當第一行需要第一個返回結果時,後兩個特別有用,因爲它們不需要COUNTIF()來維護Unique返回值。

+1

哇,偉大的職位。我經常使用類似的功能,並會研究這個! (最後一個聚合有趣)你喜歡做比較小的原因嗎?是否有性能優勢,還是僅僅是個人偏好?另外,要注意的是,OP可以在其周圍封裝'IfError([公式],「」)'來隱藏'#NUM'錯誤。 – BruceWayne

+1

@BruceWayne我只是喜歡它,因爲我覺得更容易理解。它更像我想的那樣流動。我沒有把IFERROR部分放入的原因是,OP寫道:「我將通過使用IFERROR並將其設置爲空來處理錯誤,所以我想到OP可以處理它。但對未來的讀者來說這是一個好消息。 –

+0

@ScottCraner如果OP希望列出從第1行開始的退貨,該怎麼辦? –

相關問題