用到公式:
OFFSET($B$1,MATCH($D7,$A:$A,)-1,,,COUNTA(OFFSET($B$1:$F$1,MATCH($D7,$A:$A,)-1,)))
公式分解:
一、MATCH函数(获取位置)
=MATCH($D7,$A:$A,)-1,表示获取$D7所在的位置。因为是从A1($A:$A)开始,而我们的名称是从A2开始的,所以要-1。$D7的值会随着所选不同而不同,所以取得位置值也是跟着改变。例如当$D7=“水果”时,得到“水果”位置为2;当$D7=“笔”时,得到“笔”位置为3,也就是对等它所在的行数(第几行),为匹配OFFSET函数做准备。
二、OFFSET函数(里)(这里主要是获取区域)
=OFFSET($B$1:$F$1,MATCH($D7,$A:$A,)-1,),$B$1:$F$1表示有5个可选项目,这个公式表示$D7的值($D8=“水果”等)所在行的可选区域为$B$1:$F$1。
三、COUNTA函数(统计条件区域每个可选项目非空单元格的个数)
=COUNTA(OFFSET($B$1:$F$1,MATCH($D7,$A:$A,)-1,))
四、OFFSET函数(外)
=OFFSET($B$1,MATCH($D7,$A:$A,)-1,,,COUNTA(OFFSET($B$1:$F$1,MATCH($D7,Sheet1!$A:$A,)-1,)))
这里$B$1(即“明细”)为参照点,MATCH($D7,$A:$A,)-1为偏移的行数,COUNTA(OFFSET($B$1:$F$1,MATCH($D7,$A:$A,)-1,))为返回的引用区域的列数(宽度)。
简单的思路:就是首先获取第一列表$D7的值所在的行,其次在根据$D8的值获取第二列表$E7的可选范围。
举例说明: