返回目标值之间范围内的第一个单元格

时间:2015-11-18 03:42:48

标签: excel worksheet-function

我想获取两个值之间的第一个单元格的值。 我能做的最好的事情就是得到第一个小于或大于某个值的单元格。我希望第一个单元格大于值且小于其他值。 这不起作用(因为它只有1个标准):

{=INDEX(A1:A10,MATCH(TRUE,A1:A10<B1,0))}

注意:A1:A10是值的范围,B1是比较

我试过了:

{=INDEX(A1:A10,MATCH(TRUE,and(A1:A10<B1,A1:A10>B2),0))}

但它不起作用。

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

试试这个:

{=INDEX(A1:A10,MATCH(1,(A1:A10<B1)*(A1:A10>B2),0))}

请注意,这是一个数组公式,因此您不必撰写{},但在输入公式时,请使用Ctrl + {{1}执行此操作} + Shift

答案 1 :(得分:0)

它可以在工作表中随处可见。

=INDEX(A1:A10,SMALL(IF(A1:A10>=B1,IF(A1:A10<=B2,ROW(A1:A10)-ROW(A1)+1)),ROWS(A1:A1)))

Screenshot

答案 2 :(得分:0)

使用AGGREGATE¹ function代替MATCH将相对行位置返回到INDEX

=INDEX($A$2:$A$11, AGGREGATE(15, 6, ROW($1:$10)/(($A$2:$A$11<$B$1)*($A$2:$A$11>$B$2)), ROW(1:1)))

这会强制不匹配的行号出现#DIV/0!错误。 6 选项告诉AGGREGATE忽略错误。

由于这会使用AGGREGATE的SMALL,因此在填充ROW(1:1)时,包含 k 参数将产生第二,第三等匹配。

agg_less_than

请注意,我已将您的样本范围向下移动了一行。这样做是为了说明ROW(1:10)是 A2中的位置:A11,而不是工作表上的实际行号。

¹ Excel 2010引入了AGGREGATE function。早期版本不提供。