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
技巧来使用 INDEX
和 MATCH
的组合,但您需要确保匹配的偏移量不溢出你的索引。在许多用例中,您还可以防止匹配项发生下溢。当然,如果 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 结束)。
在 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
中的一个值,则两个公式 returnB1
。 - 如果
B1
位于A1:A6
中的值范围之外,则公式之一 returns#N/A
您仍然可以通过使用 @ExcelHero add one
技巧来使用 INDEX
和 MATCH
的组合,但您需要确保匹配的偏移量不溢出你的索引。在许多用例中,您还可以防止匹配项发生下溢。当然,如果 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 结束)。