excel函数技巧:reduce+vstakc+hstack+filter生成成绩单-趣帮office教程网

如图A列至G列为源数据,如何生成I列至K列的个人成绩单,公式如下:

=DROP(REDUCE("",TOCOL(A2:A10,1),LAMBDA(x,y,VSTACK(x,LET(

array,LOOKUP(ROW(A2:A10),ROW(A2:A10)/(A2:A10<>""),A2:A10),

subject,{"语文";"英语";"数学"},

fil,DROP(REDUCE("",subject,LAMBDA(m,n,VSTACK(m,IFERROR(TEXTJOIN(",",1,FILTER(OFFSET(A2:A10,,XMATCH(n,B1:G1),,2),array=y)),"")))),1),

sum,DROP(REDUCE("",subject,LAMBDA(s,t,VSTACK(s,SUM(FILTER(OFFSET(A2:A10,,XMATCH(t,B1:G1) 1),array=y))))),1),

IFERROR(VSTACK(HSTACK("","成绩单",""),HSTACK("姓名",y),{"学科","扣分情况","扣分合计"},HSTACK(subject,fil,sum),""),""))

))),1)

公式思路:本例公式主题:reduce(vstack(iferror……,核心是iferror部分生成的表单。

iferror部分用vstack拓展高度,用hstack拓展宽度。

公式特色部分是对offset和filter的组合使用,完成了数据提取列的选择。