获取 Google 工作表中第二个匹配项的索引

Get index of second match in Google Sheets

在一个由名字和分数组成的 sheet 中,我正在尝试构建一个 sheet 来显示得分最高的人的名字。 为此:

当我要取第二大值时,只需要在第2步得到第二大值的索引即可

如果两个值并列最大,就会出现问题,因为 MATCH() 总是会给我找到的第一个值的索引。

我想到了确定最大值的索引,然后将这个索引排除在用于确定第二大值的范围之外,但是我无法实现,因为范围长度可能不同。

我也考虑过使用一个函数或脚本 returns 第 N 个索引满足范围中的条件,但我没有找到这样做的方法。

Image

这是一个传播示例sheet https://docs.google.com/spreadsheets/d/1RrUpAjbMBze9L5OqxdyEWBnYXq98LtohdgROF8s68FI/edit?usp=sharing

一种方法是添加一个列号并根据该列号和分数进行排序,然后取列表中的第二个元素:

=ArrayFormula(index(sort(transpose({B1:F3;column(B1:F3)}),3,false,4,true),2,1))

请注意,headers(玩家姓名)与他们的分数一起排序。

编辑

实际上 GS 中的排序是 stable sort(换句话说,根据文档 'range is sorted only by the specified columns, other columns are returned in the order they originally appear')所以这就足够了:

=ArrayFormula(index(sort(transpose(B1:F3),3,false),2,1))