MATCH 逆序

MATCH reverse order

在 excel sheet 中,我有 A1 到 A6:

1、2、4、6、8、9

我想使用 MATCH 函数检索包含 5 的最小区间。这里是 4 和 6。

我可以轻松地使用 MATCH 和 INDEX 函数找到 4,但我找不到找到 6 的方法。

如何在 MATCH 函数中反转数组的顺序?

你也可以试试这两个公式:

=LOOKUP(1,0/FREQUENCY(-B1,-A1:A6),+A1:A6)
=LOOKUP(1,0/FREQUENCY(B1,A1:A6),+A1:A6)

备注:

  • 列表A1:A6不需要排序
  • 如果 B1 等于 A1:A6 中的一个值,则两个公式 return B1
  • 如果 B1 位于 A1:A6 中的值范围之外,则公式之一 returns #N/A

您仍然可以通过使用 @ExcelHero add one 技巧来使用 INDEXMATCH 的组合,但您需要确保匹配的偏移量不溢出你的索引。在许多用例中,您还可以防止匹配项发生下溢。当然,如果 MATCH 没有请求 -1(大于)匹配类型参数的反向(降序)顺序,或者如果 Excel 提供了一个用于反转数组。

我的建议是对 MATCH 使用以下公式 部分:

=IF(N19 < INDEX(lookup_range, 1), 1, MIN(ROWS(lookup_range), 1 + MATCH(N19, lookup_range, 1)))

N19是你查找的值所在的单元格,lookup_range是你查找范围的名称,条件是指the first cell in the named range.

所以总而言之,您可以这样做(如果您不喜欢命名范围,请调整公式):

# For the lower limit
=INDEX(lookup_range, IF(N19 < INDEX(lookup_range, 1), 1, MATCH(N19, lookup_range, 1)))
# For the higher limit
=INDEX(lookup_range, IF(N19 < INDEX(lookup_range, 1), 1, MIN(ROWS(lookup_range), 1 + MATCH(N19, lookup_range, 1))))

注意: 如果您对任何其他输出范围感兴趣,也可以更改这两个公式中 INDEX 的第一个参数。

使用 XMATCH,如本网站所述:

https://exceljet.net/formula/xmatch-reverse-search

XMATCH允许您设置搜索方向,如下:

=XMATCH(B1,A1:A6,0,-1)

其中B1是要匹配的单元格,A1:A6是你要搜索的数组,0表示“完全匹配”,-1选择搜索反向(从单元格 A6 开始到 A1 结束)。