

如图,如何提取图1里的数据,形成图2的效果,公式如下:
=IFERROR(DROP(REDUCE("",U6:U41,LAMBDA(i,j,VSTACK(i,LET(
#将名称列表传递给reduce(x,y)
m,REDUCE("",B7:S25,LAMBDA(x,y,
#根据姓名遍历表格,并提取姓名上一行(课程),及上一行的第一列(班级)
VSTACK(x,IF(y=j,HSTACK(OFFSET(y,-1,),OFFSET(y,-1,-COLUMN(y)+1)),"")))),
#筛选,过滤无效行
n,FILTER(m,INDEX(m,,1)<>""),
#将课程名称进行遍历并统计数量,将每一门课程的名称、数量、年级放入一列
DROP(REDUCE("",UNIQUE(INDEX(n,,1)),LAMBDA(s,t,
HSTACK(s,HSTACK(t,SUM(1*(INDEX(n,,1)=t)),LEFT(XLOOKUP(t,INDEX(n,,1), I
NDEX(n,,2)),1)&"年级")))),,1)
)))),1),"")
公式思路,在图1的表中遍历U6:U41中出现的每一个名字,如果存在就提取这个名字上面的课程,以及课程这一行的第一列,也就是班级,筛选课目并分课目统计数量。