求Excel公式:根据指定产品返回对应非空口味单元格区域
Excel公式实现按产品提取对应所有口味
公式解决方案
针对L4、M4、N4单元格,分别输入以下公式(旧版Excel需按Ctrl+Shift+Enter作为数组公式输入,新版Excel直接回车即可):
L4(提取第一个口味)
=INDEX($C:$C,SMALL(IF(($C:$C<>"")*(ROW($C:$C)>MATCH($L$3,$B:$B,0))*(ROW($C:$C)<=IFERROR(AGGREGATE(15,6,ROW($B:$B)/($B:$B<>""),MATCH($L$3,$B:$B,0)+1)-1,ROWS($B:$B))),ROW($C:$C)),ROWS($L$4:L4)))
M4(提取第二个口味)
=INDEX($C:$C,SMALL(IF(($C:$C<>"")*(ROW($C:$C)>MATCH($L$3,$B:$B,0))*(ROW($C:$C)<=IFERROR(AGGREGATE(15,6,ROW($B:$B)/($B:$B<>""),MATCH($L$3,$B:$B,0)+1)-1,ROWS($B:$B))),ROW($C:$C)),ROWS($L$4:M4)))
N4(提取第三个口味)
=INDEX($C:$C,SMALL(IF(($C:$C<>"")*(ROW($C:$C)>MATCH($L$3,$B:$B,0))*(ROW($C:$C)<=IFERROR(AGGREGATE(15,6,ROW($B:$B)/($B:$B<>""),MATCH($L$3,$B:$B,0)+1)-1,ROWS($B:$B))),ROW($C:$C)),ROWS($L$4:N4)))
公式解释
- 定位产品起始行:
MATCH($L$3,$B:$B,0)精准找到L3中目标产品在B列的行号。 - 定位产品结束行:
AGGREGATE(15,6,ROW($B:$B)/($B:$B<>""),MATCH(...) +1)找到目标产品之后下一个非空B列的行号- 用
IFERROR(...,ROWS($B:$B))处理最后一个产品的情况,直接取B列最后一行作为结束行 - 减1后得到当前产品对应数据的最后有效行
- 筛选有效口味行:
($C:$C<>"")*(ROW(...)>起始行)*(ROW(...)<=结束行)筛选出C列非空、且处于当前产品数据范围内的行 - 按顺序提取行号:
SMALL(...,ROWS($L$4:L4))按顺序提取第1、2、3个符合条件的行号(ROWS部分随单元格横向变化自动递增) - 返回对应口味:
INDEX($C:$C,...)根据提取到的行号返回C列对应的口味值
适配注意事项
公式已自动适配你提到的排版规则:
- 产品间的3行间隔:公式只提取到下一个产品起始行之前的内容,自动跳过间隔行
- 同产品口味间的2行间隔:仅提取C列非空值,自动忽略间隔的空行
内容的提问来源于stack exchange,提问作者lexignot
相关产品推荐
相关产品推荐

