使用INDEX / MATCH选择前10名

时间:2015-09-18 07:09:06

标签: excel indexing

我正在尝试制作一份报告,显示每个月的前10位用户,而且我对如何让它工作有点困惑。

我希望它如何工作是我从E1中选择日期并将结果填入E4中。

我尝试过使用这个公式

=INDEX($B$1:$B$15,MATCH($E$1,$A$1:$A$15&LARGE($B$1:$B$15,D4)*1,2))

但我不确定我做错了什么。

以下是我的报告的基本版本。

sample

2 个答案:

答案 0 :(得分:1)

我假设您希望列表中的用户数量排名前10位。我认为最简单的解决方案是使用数据透视表。创建这样一个表的步骤(我使用的是Excel 2010):

  • 转到插入 - > 数据透视表
  • 报告过滤器设置为日期,将行标签设置为用户,将设置为用户计数: Pivot table
  • 然后点击Excel中行标签旁边的按钮,然后选择值过滤器 - > 前10名。然后选择所需列的前10位(用户数)。 Select value filter.
  • 接下来,再次点击 Row Lables 旁边的按钮,然后点击更多排序选项...
  • 然后选择你想要排序的方式,我假设你想要:按用户数降序。

答案 1 :(得分:0)

数据透视表解决方案是我认为最好的解决方案。但这很有可能表明为什么数据透视表是如此强大。

对于公式解决方案,我需要三个辅助列:

enter image description here

公式:

C2及以下:

=COUNTIFS(A:A,A2,B:B,B2)+MATCH(B2,B:B,0)/1000

D2及以下:

{=SUM(($A$1:$A$100=A2)*($C$1:$C$100>=C2)*(IFERROR(MATCH($C$1:$C$100,$C$1:$C$100,0),0)=ROW($C$1:$C$100)))}

这是一个数组公式。将其放入没有大括号的单元格中,然后按[Ctrl] + [Shift] + [Enter]完成。

E2及以下:

=A2+D2/1000

H4及以下:

=INDEX(B:B,MATCH($H$1+G4/1000,E:E,0))

说明:

COUNTIFS原则上没有问题。但如果不同的颜色相等,那么它们肯定需要排名不同。所以第一次变得复杂。

然后排名本身就是项目和条件的多次出现。我发现,只有解决方案是使用一种性能非常糟糕的数组公式。

为了获得前十名的查阅列,我已将日期添加到排名的第1000位。