MATCH相反的顺序
在Excel表格中,我从A1到A6:
1,2,4,6,8,9
我想用MATCH函数来检索包含5的最小间隔。这里是4和6。
我可以很容易地使用MATCH和INDEX函数来查找4,但我找不到find6的方法。
如何在MATCH函数中颠倒数组的顺序?
你也可以试试这两个公式:
=LOOKUP(1,0/FREQUENCY(-B1,-A1:A6),+A1:A6) =LOOKUP(1,0/FREQUENCY(B1,A1:A6),+A1:A6)
笔记:
- 列表
A1:A6
不需要sorting - 如果
B1
等于A1:A6
一个值,则两个公式都返回B1
。 - 如果
B1
位于A1:A6
的值范围之外,则其中一个公式返回#N/A
你不能扭转顺序,但你可以这样做:
=INDEX(A:A,MATCH(5,A:A,1)+1)
以上公式返回六,它是基于寻找一个五。 所以这就是你如何find周围五个区间的第二个值。
当然,正如你所提到的,通过使用与我在这里完全相同的公式,除了在结尾处没有+1
之外,你可以find间隔的第一个值(在这种情况下是四个)。
你仍然可以使用INDEX
和MATCH
的组合,通过使用@ExcelHero add one
技巧,但你需要确保匹配的偏移不会溢出你的索引。 在许多用例中,您还可以保护您的匹配不受下溢。 当然,如果MATCH
没有为-1(大于)匹配types参数请求反向(降序)顺序,或者Excel提供了用于反转数组的公式,则我们不需要所有这些。
我的build议是对MATCH
部分使用以下公式:
=IF(N19 < INDEX(lookup_range, 1), 1, MIN(ROWS(lookup_range), 1 + MATCH(N19, lookup_range, 1)))
N19
是持有查找的值的单元格, lookup_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))))
NOTA:如果您对任何其他输出范围感兴趣,您也可以在这两个公式中更改INDEX
的第一个参数。