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。 看到这里 ,看看他们可能会帮助你的问题。