2016-03-29 62 views
1

我使用下面的數組forumla:Excel - 與大函數的索引匹配:顯示重複值?

=INDEX('Opp Data'!$H:$H,MATCH(1,('Opp Data'!$G$1:$G$1000=$A$10)*('Opp Data'!$K$1:$K$1000=LARGE(IF('Opp Data'!$G$1:$G$1000=$A$10,'Opp Data'!$K$1:$K$1000),6)),0)) 

公式的目的是查找這是奠定了像我下面的奧普數據表:

Column H   Column G   Column K 
Client A   Aerospace   £200 
Client B   Rail    £150 
Client C   Aerospace   £100 

的公式應該檢查哪些客戶機最高花費和使用大功能,在每一行我可以設置我的第一,第二和第三最大值等。

我也檢查我的單元格A10,其中有'航空航天'一詞。 該公式應只返回那些航空航天在g列中對應於它們的客戶名稱。

我的最終結果應該是這樣的。

Client A 
Client C 

這工作得很好,但是如果我們有兩個客戶在k列像這樣的值相同:然後客戶端d未列出

Column H   Column G   Column K 
Client A   Aerospace   £200 
Client B   Rail    £150 
Client C   Aerospace   £100 
Client D   Aerospace   £100 

和我的公式再現客戶端C的兩倍。

請有人告訴我如何獲得重複值(不重複客戶名稱!)顯示?

我做錯了什麼?在此先感謝

+0

你在哪個單元格中啓動公式?原因是可以通過在等式中添加countif()。但爲了給方程修改我現在需要現在的第一個單元格地址。 –

回答

0

你需要一個COUNTIF()添加到數組公式:

=IFERROR(INDEX('Opp Data'!$H:$H,MATCH(1,('Opp Data'!$G$1:$G$1000=$A$10)*('Opp Data'!$K$1:$K$1000=LARGE(IF('Opp Data'!$G$1:$G$1000=$A$10,'Opp Data'!$K$1:$K$1000),ROW(1:1))*(COUNTIF($C$10:$C10,'Opp Data'!$H$1:$H$1000)=0)),0)),"") 

如果因爲它是拖累將增長計數,看看有什麼是絕對的,什麼是相對的。我還添加了ROW(1:1),這是動態的,因爲它被拖拽下來,它會從1變爲2,等等,因此Large中的k會自動調整。

作爲數組公式,在退出編輯模式時必須使用Ctrl-Shift-Enter確認。如果正確完成,Excel將自動將{}放在公式的周圍以表示數組公式。

查看照片供參考單元地址。

enter image description here


如果在順序添加中的值,那麼就可以使用AGGREGATE()式的非CSE陣列。

要得到的值:

=IFERROR(AGGREGATE(14,6,'Opp Data'!$K$1:$K$1000/('Opp Data'!$G$1:$G$1000=$A$10),ROW(1:1)),"") 

然後使用在引用編號的列中的另一列:

=IF(D11="","",INDEX('Opp Data'!$H$1:$H$1000,AGGREGATE(15,6,ROW($1:$1000)/(('Opp Data'!$G$1:$G$4=$A$10)*('Opp Data'!$K$1:$K$4=Sheet12!D11)),COUNTIF($D$11:$D11,D11)))) 

這些是非Ctrl鍵移輸入數組公式,所以進入他們作爲正常的公式。

enter image description here

0

我也有這個問題。我會對更優雅的解決方案感興趣,但是我的解決方法是添加一個額外的列來修改K列以使值唯一,並使我的Large函數引用該列而不是K.類似於:

=$K2 + row()/10000000 

應該爲您可以在數組函數中引用的每行創建唯一值。

+0

謝謝你的建議,但是當你說這使得這些值是唯一的,你的意思是這改變了值,因爲我需要這些是100%準確的,不能改變:( –

+0

你不會改變列K,並且將需要完全準確的任何內容鏈接到列K,只需使用新列來爲大公式取消重複值即可。 – ELW