2016-04-29 46 views
0

我的客戶在Sheet1列表在電子表格中,像這樣:excel:索引匹配 - 按支出列出前10名工作?

Date   Entity  Sector  Client   Spend 
April 2016  Group1  Aerospace  Client A  £2,000,000.00 
April 2016  Group1  Aerospace  Client B  £5,000,000.00 
April 2016  Group2  Rail   Client C  £13,000.00 
April 2016  Group1  Aerospace  Client D  £45,000.00 
April 2016  Group1  Telecoms  Client E  £20,000.00 

我想通過前10名客戶,我們用花的名單拉。

我有一定的參數/條件我需要設置,即

客戶必須具有「組1」的實體,必須落入「航天」扇區下。

在細胞A10我把我的部門= Aerosapce 在細胞C6我分配我的基團=組別1

到目前爲止我使用此陣列式和拖動它向下10行,以產生10個獨特的結果。

=IFERROR(INDEX('Opp Data'!$H2:$H5000,MATCH(1,('Opp Data'!$G$2:$G$5000&'Opp Data'!$F$2:$F$5000=$A$10&$C$6)*('Opp Data'!$K$2:$K$5000=LARGE(IF('Opp Data'!$G$2:$G$5000&'Opp Data'!$F$2:$F$5000=$A$10&$C$6,'Opp Data'!$K$2:$K$5000),ROW(1:1))*(COUNTIF($C$13:$C13,'Opp Data'!$H$2:$H$5000)=0)),0)),"") 

這應該給我的客戶,以便與最大的,以最低的支出,產生像這樣的結果:

Client   Sector   Spend 

Client B  
Client A 
Client D 
etc 
etc. 

下一步,我要列出相關部門的客戶端所屬的客戶端名稱即,「航空航天」以及旁邊列中的花費。

我用折射率匹配這樣做:

=IFERROR(INDEX('Opp Data'!$C:$C, MATCH(A2,'Opp Data'!$D:$D, 0)),"") 

目前的數據是所有的地方,並且花費不與客戶端名稱對應,並正在顯示出一些客戶不在組1或航空航天。

我得到這個:

Client   Sector   Spend 

Client B   Rail    £20,000.00 
Client A   Aerospace   £13,000.00 
Client D   Telecoms   £2,000,000.00 
etc 
etc. 

但我應該得到這樣的:

Client   Sector   Spend 

Client B   Aerospace   £5,000,000.00 
Client A   Aerospace   £2,000,000.00 
Client D   Aerospace   £45,000.00 
etc 
etc. 

請能有人告訴我在哪裏,我錯了,讓我知道,如果有更好的辦法去做這個?

在此先感謝

回答

1

爲了讓您的表中的最好的辦法就是一個透視表有過濾器。這將允許你做你想做的事。

以外的是,如果你想公式則:

首先獲得最高支出。要做到這一點,我們需要使用LARGE()或聚合()函數:

=IFERROR(AGGREGATE(14,6,$E$2:$E$6/(($C$2:$C$6=$G$2)*($B$2:$B$6=$H$2)),ROW(1:1)),"") 

在支出列的第一個單元格將這個和拖累。行(1:1)充當計數器,隨着它被拖下來而增加。這樣它找到了第一大,然後第二個等等。

/以下的部分規定只有符合標準的部分才能使用。我把H2中的Aerospace和H2中的Group1

然後我們可以使用另外一個集合()函數在側INDEX得到另兩列的其他數據:

部門:

=IF(L2<>"",INDEX($C$2:$C$6,AGGREGATE(15,6,(ROW($C$2:$C$6)-1)/(($E$2:$E$6=L2)*($B$2:$B$6=$H$2)),COUNTIF($L$2:$L2,L2))),"") 

或者,因爲我們有所需的部門已經在單元格中,我們可以簡單地:

=IF(L2<>"",$G$2,"") 

客戶:

=IF(L2<>"",INDEX($D$2:$D$6,AGGREGATE(15,6,(ROW($D$2:$D$6)-1)/(($E$2:$E$6=L2)*($B$2:$B$6=$H$2)),COUNTIF($L$2:$L2,L2))),"") 

我們再次使用AGGREGATE而不是MATCH,以防與Spend中的金額有關係。 COUNTIF()允許我們獲得那些重複的地方,Match只會返回第一個。

編輯公式中的範圍以匹配您的零件時請注意此部分:(ROW($D$2:$D$6)-1)這又是一個將整數返回INDEX()函數的計數器。我們需要它從1開始。因此,如果您的數據從第三行開始,我們需要將1更改爲2。它應該比起始行少1。

enter image description here

隨着數據透視表,看看高級篩選和VBA。請參閱HERE以瞭解它們如何幫助解決您的問題。