Excel:有没有一个函数返回一个满足匹配条件的范围?

给定一个与后续行(在同一列上)相比较的值,并将范围返回到首次更改值的行。

Example: A 1 cat 2 cat 3 cat 4 dog 5 cat 

要返回的范围是A1:A3。

假设在单元格c1有猫,下面的公式将返回第一个连续的匹配范围。 用Ctrl + Shift + Enter进入

=COUNTIF(OFFSET(A1:A5,MATCH(C1,A1:A5,0)-1,0,MATCH(TRUE,OFFSET(A1:A5,MATCH(C1,A1:A5,0),0)<>C1,0)),"cat")

如果你的数据始终在A1开始,并且你希望整个范围匹配第一个值,一直到下一个值,使用下面的数组公式(用Ctrl + Shift + Enterinput ):

 =OFFSET($A$1,0,0,MATCH(TRUE,A:A<>A1,0)-1) 

这可以用作数组公式。 按下ctrl + shift +在编辑栏中input以评估它。 我已经testing过这个非常简单的案例。 我不能告诉更复杂的情况:

 =INDIRECT("A1:A" & MAX(ROW(A1:A5)*(A1:A5="cat")*(A2:A6<>"cat"))) 

编辑:如果你真的想要范围被返回,而不是值,你只需要删除间接,但离开其中的一切。