excel函数技巧:reduce解决环形队列问题-趣帮office教程网

各酒店技师依次围成一个环形队如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进行排序。