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