我正在尝试结合 Index & Match,根据数字是否小于或等于同一行上 A 列中的值来提取 B 列中的值。例如,如果我给出公式,0
那么我希望它返回0.75
,15.25
应该返回0.80
,等等。
我目前想出的公式有点类似,但并不正确。如果我输入,0
我会得到#N/A
;如果我输入15.25
,我会得到,0.75
这是不正确的。
=INDEX(B1:B11,MATCH(A13,A1:A11))
答案1
第一个问题来自于,MATCH
如果语句未找到该值,它将返回“#N/A”。因此,语句INDEX
不知道如何处理此问题,因此您必须处理这种情况。语句IF
应该可以很好地处理这种情况。
=IF(A1>A13,0,匹配(A13,A1:A11))
对于上面的例子,如果一个值小于数组的第一个数字,它将返回 0。接下来,您必须将其插入到语句中INDEX
。
接下来,您必须处理向上舍入而不是向下舍入的事实。这也可以通过 and 语句轻松实现。您可以简单地将 A 列中的数字与目标单元格进行比较,看看它们是否相同,如果不相同,则将行数增加 1。您只需要在语句的帮助下将语句嵌套在一起IF
即可。 IF
INDEX
=如果(INDEX(A1:A11,如果(A1>A13,0,MATCH(A13,A1:A11)))=A13,如果(A1>A13,0,MATCH(A13,A1:A11)),如果(A1>A13,0,MATCH(A13,A1:A11))+1)
因此这基本上会使它现在向上舍入而不是向下舍入。
最后一步是让您获得第二列的值,而不是第一列的值。您的语句是正确的INDEX
,我们只需将它们放在一起即可。
= INDEX(B1:B11,如果(INDEX(A1:A11,如果(A1>A13,0,MATCH(A13,A1:A11)))=A13,如果(A1>A13,0,MATCH(A13,A1:A11)),如果(A1>A13,0,MATCH(A13,A1:A11))+1) )
这正好给出了您在问题中想要的结果。抱歉公式太长了,但您想要的或多或少复杂一些。