excel基于匹配值获取行范围或实际值

我在我的Excel表中有以下结构。

AB --------- ----- 1 | category1 test1 2 | category1 test2 3 | category1 test3 4 | category2 test4 5 | category2 test5 6 | category3 test6 7 | category3 test7 8 | category3 test8 9 | category3 test9 10 | category4 test10 

你可以build议一种方法使用EXCEL函数而不是VBA )获取范围或给定的类别文本作为input的实际值

例如,给定category2我需要找回像B4:B5"test4"/"test5"

我需要一种dynamic的方式,即我需要一个function,如果我做一个插入并添加一个新的值到一个类别,仍然会工作,例如

  AB --------- ----- 4 | category2 test4 5 | category2 test5 6 | category2 test200 7 | category2 test203 

现在给category2我会回来B4:B7

假设类别总是连续的,可以参考:

 =OFFSET($A$1,MATCH("category2",$A:$A,0)-1,1,COUNTIF($A:$A,"category2")) 

如果您的类别始终以相同的前缀开头,则可以使用类似以下内容:

 =ADDRESS(MATCH("category"&$C$1,B:B,0),2,4,1)&":"&ADDRESS(MATCH("category"&($C$1+1),B:B,0)-1,2,4,1) 

所以如果你在C1中input“2”,它会返回“B4:B5”

这也假定类别是以增加值命名的,所以如果没有类别3,这是行不通的。