各酒店技师依次围成一个环形队如B列所示,其对应评分如C列所示.从前往后查询,公式列出比当前技师评分高二个名次且距离最近的技师姓名.没有填无.
=REDUCE("查询结果",B6:B29,LAMBDA(i,j,VSTACK(i,LET(
x,FILTER($B$6:$C$29,ISNUMBER(XMATCH($A$6:$A$29,OFFSET(j,,-1)))),
m,XMATCH(j,INDEX(x,,1)),
y,TAKE(VSTACK(SEQUENCE(m,,ROWS(x)-m 1),IFERROR(SEQUENCE(ROWS(x)-m),"")),ROWS(x)),
z,SORT(HSTACK(x,y),3),
r,IFERROR(CHOOSEROWS(TOCOL(IF(INDEX(z,,2)>OFFSET(j,,1),INDEX(z,,1),0/0),3),2),"无"),
r))))
公式思路:公式主题为reduce(filter(chooserows(tocol……,主要功能是将数据按条件进行提取,同时实现环形数据的排列。环形数据的排列主要通过x,m,y,z四个变量实现:
变量x:提取同一个酒店的所有数据;
变量m:匹配遍历数值在x中的位置;
变量y:根据位置数据形成一个数列,数列从遍历数据所在位置为1,上面部分依次累加在后面;如3,4,5,1,2。
变量z:将变量合并变按变量y进行排序。
评论 (0)