簡體   English   中英

索引匹配數組:索引范圍和多個匹配項

[英]Index Match Array: Index Range And Multiple Matches

我在“小組佣金”標簽上的以下布局中有一個數據塊(我也附有一張照片。)。 在一個為代理Paul命名的單獨選項卡上,我試圖將B11單元格中的“客戶名”和B4單元格中的“代理人”名稱與組佣金中的數據進行交叉引用,以返回特定代理人的佣金%。 因此,如果在Paul選項卡上我在B11中具有“客戶端1”,在B4中具有“ Paul”,那么我希望能夠返回“ 12.5”。 Paul並不總是在Agent 4中。對於給定的客戶,任何Agent都可以在Agent 2,Agent 3或Agent 4中。

在此處輸入圖片說明

我有這個公式,但是它不是我想要的,因為我不能對行號進行硬編碼。

{=INDEX('Group Commissions'!G:I,MATCH('Paul'!B11,'Group Commissions'!A:A,0),MATCH(B4,'Group Commissions'!C143:E143,0))}

但是,使用一定范圍的列會導致公式錯誤。 正如我所提到的,我無法對行號進行硬編碼,因此現在我陷入了困境。 這有可能嗎?

{=INDEX('Group Commissions'!G:I,MATCH('Paul'!B11,'Group Commissions'!A:A,0),MATCH(B4,'Group Commissions'!C:E,0))}

=INDEX('Group Commissions'!G1:I5,MATCH(Paul!B11,'Group Commissions'!A1:A5,0),SMALL(IF(Paul!B4=IF('Group Commissions'!A1:A5=Paul!B11,'Group Commissions'!C1:E5),IF('Group Commissions'!A1:A5=Paul!B11,COLUMN('Group Commissions'!C1:E5)-COLUMN(C:C)+1)),1))

好的,這有點混亂,但是可以滿足您的需求。

對於第二個參數(列號),我不得不使用嵌套的IF()語句來構建列號數組(距離INDEX()子句的開頭最近,使用列計算只是為了便於閱讀,我通常會減去所需的數字)。

我首先為與客戶端匹配的行的所有單元格生成FALSE數組,為與客戶端匹配的行的正確值生成FALSE數組:

IF('Group Commissions'!A1:A5=Paul!B11,'Group Commissions'!C1:E5)

然后,我檢查此數組的代理名稱,並將其與我要返回的列號等同(相同的公式,但返回的列號減去索引偏移量):

IF(Paul!B4=[Previus part],IF('Group Commissions'!A1:A5=Paul!B11,COLUMN('Group Commissions'!C1:E5)-COLUMN(C:C)+1)

它包裝在SMALL()因此我們可以返回最小的結果(首先輸入數字),因此我們獲得列號作為結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM