Excel 创建考虑重复项的索引查找

Excel 创建考虑重复项的索引查找,excel,vba,Excel,Vba,我在excel中有一个虚拟数据集,如下所示 为方便起见,假设此范围从工作表中的单元格A1粘贴到B7 我想创建一个范围,按ID显示前5个最高计数。因此,最终产品应如下所示: 为了实现这一点,我使用了一个索引公式和一个包含一个大函数的匹配函数,该函数给出了K的最大值。例如,对于下面ID列中的前1个结果,我使用: =索引($A$2:$B$7,匹配(大($B$2:$B$7,1),$B$2:$B$7,0),1) 类似地,我使用下面计数列中的前1个结果 LARGE($B$2:$B$7,1) 如果我将其

我在excel中有一个虚拟数据集,如下所示

为方便起见,假设此范围从工作表中的单元格A1粘贴到B7

我想创建一个范围,按ID显示前5个最高计数。因此,最终产品应如下所示:

为了实现这一点,我使用了一个索引公式和一个包含一个大函数的匹配函数,该函数给出了K的最大值。例如,对于下面ID列中的前1个结果,我使用:

=索引($A$2:$B$7,匹配(大($B$2:$B$7,1),$B$2:$B$7,0),1)

类似地,我使用下面计数列中的前1个结果

LARGE($B$2:$B$7,1)
如果我将其应用于所有单元格,更改每行K的值,则得到的最终结果如下所示:

正如您所看到的,对于不具有相同计数的ID,结果非常有效。然而,在那些计数相同的地方,我会得到重复的。因此,我要寻找的是一个函数,它查看是否将要输出一个重复的ID,然后查看是否有另一个ID具有相同的计数值

我相信这在base Excel中可能很有挑战性,但也许有一种方法可以在VBA中实现?然而,我对VBA不是很熟悉,我似乎在网上找不到任何关于这方面的东西。有人知道怎么做吗


非常感谢

使用COUNTIF()返回正确的k值,将ID输出链接到Count输出

=INDEX(A:A,AGGREGATE(15,7,ROW($A$2:$A$7)/($B$2:$B$7=F2),COUNTIF($F$2:F2,F2)))

这可以很容易地在香草Excel中通过一个数据透视表和一个自定义顶部过滤器来完成,甚至不需要任何公式。是的,我可以看到,在我发布的虚拟示例代码中,这看起来是一个解决方案。但实际上,我有一个非常大的轴心,ID和日期作为一个组,并与许多其他聚合一起计算为一个聚合。因此,它有点复杂,不能通过过滤完成。可以使用透视表作为源创建透视表(即不修改第一个透视表)。不过,我同意这可能会变得复杂。