Return 目标值范围内的第一个单元格

Return first cell in range between target values

我想获取介于两个值之间的范围内第一个单元格的值。 我能做的最好的事情就是获取第一个小于或大于某个值的单元格。我想要第一个既大于某个值又小于另一个值的单元格。 这不起作用(因为它只有 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))}

但是没有用。

感谢您的帮助。

试试这个:

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

请注意,这是一个数组公式,因此您不必写{},但是当您输入公式时,请使用Ctrl+Shift+Enter.

它将在 sheet 的任何地方为您服务。

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

使用 AGGREGATE¹ function instead of MATCH to return the relative row position to INDEX.

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

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

因为这使用了 AGGREGATE 的 SMALL,增加 k 参数将在您向下填充 ROW(1:1) 时产生第二个、第三个等匹配项。

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


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