查找列表中第一个大于查找值的对应变量

查找列表中第一个大于查找值的对应变量

请参阅图片了解问题描述和示例。

我想返回大于我的查找值/数字的第一个数字所对应的字母。

我一直在尝试使用索引匹配来解决这个问题,但它似乎只有在查找值和与其比较的数字完全匹配时才有效。

这是我认为可行但实际上不起作用的公式:=+INDEX(A3:F3,MATCH(A6,A2:F2,-1))

在此处输入图片描述

答案1

正如我在评论中提供的链接所讨论的那样,MATCH(,,-1)要求按降序对数据进行排序,否则将返回错误。

为了获得您字面上陈述的内容(“第一个大于我的查找值/数字的数字”,您可以使用:

=INDEX(A3:F3,MATCH(A6,A2:F2,1)+1)

要获得第一个数字相等的匹配项或者大于您的查找值,您可以使用:

=INDEX(A3:F3,IFERROR(MATCH(A6,A2:F2,0)-1,MATCH(A6,A2:F2,1))+1)

答案2

这里可以做很多事情。如果想做一些更“离奇”但更简短的公式,那么……可以使用:

=INDEX(FILTER(A2:F3,A2:F2>=A6),2,1)

FILTER()这样设置后,返回结果数组(该数组仅在内部使用)第一列中所需的字母。因此,无论如何,人们都会准确地知道所需的字母是“第 2 行,第 1 列”,这使得函数INDEX()易于填写。

然后以人们更习惯的方式处理“大于”或“等于或大于”,即在条件中使用“>”或“>=” FILTER()

它确实解决了查找行未排序(即无序)的情况,因为它FILTER()会在无人询问的情况下对其结果数组进行排序。因此,无论查找行的条件如何,都会返回正确的答案。

如果没有FILTER()可用的,可以使用以下数组来MATCH()查找并提供INDEX()其值:

=MIN(IFERROR((A2:F2)/(A2:F2>=A6),MAX(A2:F2)))

几乎完全是老派的,IF(ISERROR(...如果没有IFERROR()可用的,可以用一个来代替。这些值被“>=”测试中的 1 或 0 除,因此会产生查找行中的值或错误,但在这些情况下,MAX()会填写查找行中的最高值,这样它就不会干扰查找所需的值。如果情况需要,可以将“+1”插入结果中,MAX()这样所有小于的值都会超过“自然”条目。

当然,现在XLOOKUP()这样做就很好了:

=XLOOKUP(A6,A2:F2,A3:F3,,1)

简短、简单、清晰。无需任何技巧。

F Bert很高兴。只是将这些发布给那些需要答案而不是只关注问题本身的一组因素的研究者。)

相关内容