如图,A列至D列为源数据,要求对每列进行排序,排序规则为:优先按照后面数字大小升序排列,如果数字一样,按照ABCD的字母顺序升序排列,公式如下:
=DROP(REDUCE("",A2:A4,LAMBDA(m,n,LET(
array,OFFSET(n,,,,4),
letter,TEXTSPLIT(array,SEQUENCE(10)-1),
number,--TEXTSPLIT(array,letter,,1),
VSTACK(m,SORTBY(array,number,1,letter,1))))),1)
公式思路:非目标主体内的排序要使用sortby函数。
本例公式的主体为reduce(vstack(sortby……reduce offset将每行数据遍历,vstack将所有结果堆叠,sortby实现将每行数据进行排序。
本例的亮点是textsplit函数的嵌套使用:
sortby函数排序所用到的数据有number和letter两个变量提供,这两个变量以textsplit函数完成对源数据的拆分,比较讨巧的是对letter变量的再次引用,将letter得到的结果作为number分列的数据,实现了对数字的提取,这种双层嵌套分列的方法非常好用。
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved