繁体   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