如图,A列至E列是源数据,记录每个酒店每个技师的成绩,要求技师总收入(科目A,B,C之和)都>=18的酒店里,总收入前3技师名单及其对应科目的平均收入,公式如下:
=REDUCE(A1:E1,UNIQUE(A2:A31),LAMBDA(x,y,LET(
sum,MMULT(C2:E31,SEQUENCE(3)^0),
fil,FILTER(HSTACK(A2:E31,sum),(sum>=18)*(A2:A31=y)),
array_match,ISNUMBER(XMATCH(INDEX(fil,,6),LARGE(INDEX(fil,,6),SEQUENCE(3)))),
name,TEXTJOIN(",",1,FILTER(INDEX(fil,,2),array_match)),
average_kemu,MAP({3,4,5},LAMBDA(x,AVERAGE(FILTER(INDEX(fil,,x),array_match)))),
VSTACK(x,HSTACK(y,name,average_kemu)))
))
公式思路:本例公式主要结构为reduce(vstack(hstack……思路是将想要的结果通过hstack函数整理成一行,再通过vstack函数汇总或者说堆叠成一个二维表。
公式特色:
1、mmult函数的使用,实现了简洁的二维表加法。
2、map函数的使用,实现了将三列的平均值合并到一条公式里进行计算。
评论 (0)