如图,A列为源数据,D1为指定的开始姓名,如何实现将所有人名按环形数列进行排序,即从开始人开始先依次提取后面的,再把开始人上面的人接到后面,形成新的数组,公式如下:
=LET(开始人位置,XMATCH(D1,A1:A10),
先排序数列,-(ROWS(A1:A10)-开始人位置 1),
后排序数列,x-1,
VSTACK(TAKE(A1:A10,先排序数列),TAKE(A1:A10,后排序数列)))
公式思路:
本公式先用xmatch函数提取开始人的位置,当然countif函数也可以实现;然后形成两个数列:先排序数列和后排序数列。分别提供给take函数用作姓名的提取。其中先排序数列是负数的形式,从后向前提取。
环形排序问题本质上还是索引的引用问题,是对索引位置的再排序,方法有很多,但有了take、chooserows、choosecols这样函数可以直接对所需要的位置进行提取,而不用重新排名。
评论 (0)