excel函数技巧:reduce+textsplit实现数字、字母主次排序-趣帮office教程网

如图,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分列的数据,实现了对数字的提取,这种双层嵌套分列的方法非常好用。