excel:索引匹配 – 按支出列出十大职位?

我在电子表格的sheet1上有一个客户列表,如下所示:

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名客户的名单。

我有一些我需要设置的参数/标准,即

客户必须有一个“Group1”实体,必须属于“航空航天”部门。

在单元格A10我把我的部门= Aerosapce在单元格C6我分配我的组= Group1

到目前为止,我正在使用这个数组公式,并将其向下拖动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. 

请有人可以告诉我哪里错了,让我知道是否有更好的方法来做到这一点?

提前致谢

要得到您的表格,最好的方法是使用filter的数据透视表。 这将允许你做你想做的事情。

除此之外,如果你想公式,那么:

首先得到最高的花费。 为此,我们需要使用LARGE()或AGGREGATE()函数:

 =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)充当一个计数器,随着被拖动而增加。 这样,它find第一大,然后第二个等等。

下面的部分/规定只有符合标准的人才能使用。 我把H2和G2的Aerospace分为Group1

然后我们可以在INDEX一侧使用另一个AGGREGATE()函数来获取另外两列上的其他数据:

部门:

 =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 。 它应该比起始行less1。

在这里输入图像说明

与数据透视表一起,查看高级filter和VBA。 看到这里 ,看看他们可能会帮助你的问题。