Google sheets 在Google表单中获取第二个匹配的索引

Google sheets 在Google表单中获取第二个匹配的索引,google-sheets,indexing,match,Google Sheets,Indexing,Match,在一张由姓名和分数组成的表格中,我试图构建一张表格来显示得分最高的人的姓名。 为此: 我把分数排序 我得到了最大值的索引 我用给定的索引偏移名称列表 当我想得到第二个最大值时,我只需要在步骤2中得到第二个最大值的索引 如果两个值的最大值是并列的,则会出现问题,因为MATCH()将始终为我提供找到的第一个值的索引 我想确定最大值的指数,然后将该指数从用于确定第二大值的范围中排除,但我无法实现,因为范围长度可能不同 我还想过使用一个函数或脚本返回满足某个范围标准的第n个索引,但我没有找到任何方法

在一张由姓名和分数组成的表格中,我试图构建一张表格来显示得分最高的人的姓名。 为此:

  • 我把分数排序
  • 我得到了最大值的索引
  • 我用给定的索引偏移名称列表
当我想得到第二个最大值时,我只需要在步骤2中得到第二个最大值的索引

如果两个值的最大值是并列的,则会出现问题,因为MATCH()将始终为我提供找到的第一个值的索引

我想确定最大值的指数,然后将该指数从用于确定第二大值的范围中排除,但我无法实现,因为范围长度可能不同

我还想过使用一个函数或脚本返回满足某个范围标准的第n个索引,但我没有找到任何方法

下面是一个示例电子表格

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

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

请注意,标题(球员姓名)与他们的分数一起排序

编辑

实际上,GS中的排序是a(换句话说,根据文档“范围仅按指定列排序,其他列按其最初出现的顺序返回”),因此这就足够了:

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

你试过大功能吗?意识到GoogleSheets排序是一种稳定的排序(将领带保留在其原始顺序),因此不需要按列进行额外排序-将更新我的答案。谢谢你的回答,这正是我需要的。排列公式是必要的吗?你是对的,没有必要!