=FILTER(C2:E77,D2:D77=H2)
=FILTER(C2:E77,(LEFT(C2:C77,4)=XLOOKUP(H2,D2:D77,C2:C77))*(LEN(C2:C77)=6))
LEFT(C2:C77,4)=XLOOKUP(H2,D2:D77,C2:C77)
LEN(C2:C77)=6
这样的数据筛选,是不是很简单?
这个案例,需要能熟练运用FILTER函数,XLOOKUP函数,LEFT函数,LEN函数,而这几个函数本身非常简单。
如果想设计一个综合公式,自动生成一个带标题的完整报表,则可以使用下面的公式:
=VSTACK(
C1:E1,
FILTER(C2:E77,D2:D77=H2),
FILTER(C2:E77,(LEFT(C2:C77,4)=XLOOKUP(H2,D2:D77,C2:C77))*(LEN(C2:C77)=6))
)
或者使用LET函数将简化公式,提高阅读性:
=LET(
指定科目名称, H2,
标题, C1:E1,
数据区域, C2:E77,
科目编码, C2:C77,
科目名称, D2:D77,
总账科目编码, XLOOKUP(指定科目名称,科目名称,科目编码),
总账科目数据, FILTER(数据区域, 科目名称=指定科目名称),
一级明细数据, FILTER(数据区域,(LEFT(科目编码,4)=总账科目编码)*(LEN(科目编码)=6)),
VSTACK(标题, 总账科目数据, 一级明细数据)
)

