我在电子表格中的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
我想了解一下我们花费的十大客户名单。
我有一些我需要设定的参数/标准,即
客户必须拥有' Group1'实体,必须属于航空航天公司扇区。
在Cell 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.
在客户名称旁边,我想列出客户所属的相关部门,即" Aerospace"并在旁边的专栏中花费。
我这样做是通过使用索引匹配:
=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.
请有人告诉我我哪里出错了,如果有更好的方法可以告诉我吗?
提前致谢
答案 0 :(得分:1)
要获得您的表,最好的方法是带过滤器的数据透视表。这样你就可以做你想做的事。
除此之外你想要公式:
首先获得最高支出。为此,我们需要使用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)充当计数器,随着它被拖拽而增加。这样它就找到了第一个,然后是第二个,依此类推。
/
下方的部分规定只有符合条件的部分才会被使用。我将Aerospace
放在G2中,将Group1
放在H2中。
然后我们可以在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开始。因此,如果您的数据在第3行开始,我们需要将1
更改为2
。它应该比起始行少1个。
与数据透视表一起,查看高级过滤器和VBA。请参阅HERE,了解它们如何帮助解决您的问题。