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

我想要在两个值之间的范围内获取第一个单元格的值。 我能做的最好的是获得第一个小于或大于值的单元格。 我希望第一个单元格的值大于一个值而小于另一个值。 这不起作用(因为它只有一个标准):

{=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))} 

但它没有工作。

感谢您的帮助。

尝试这个:

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

请注意,这是一个数组公式,因此您不必编写{} ,但是当您input公式时,请使用Ctrl + Shift + Enter执行此操作。

它会在你的任何地方为你工作。

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

截图

使用AGGREGATE¹函数而不是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中的位置 ,而不是工作表上的实际行号。


¹AGGREGATEfunction是在Excel 2010中引入的。它在早期版本中不可用。