昨天介绍了SORT排序函数,今天为大家介绍SORT函数的亲戚SORTBY函数。SORTBY函数和SORT函数功能是类似的,也是排序函数,两都虽然都是排序函数,但它们也有各自的一些特点,大家可以将两者进行对比学习,可以加深印象。先来看语法。
EXCEL语法:=SORTBY(array, by_array1, [sort_order1], [by_array2], [sort_order2],…)
WPS语法:=SORTBY(数组,排序依据数组1,[排序顺序1],…)
两都语法上只是参数表达的文字形式不同,但两者的意思是一样的。
Array——必需,需要进行排序的区域或数组;
by_array1——必需,用作排序依据的行或列,函数会根据这个参数是行或列自动识别是按列排序还是按行排序。
[sort_order1]——可选,指定排序的顺序是升序还是降序。省略或指定为1时表示将按升序排序,指定为-1时,表示将按降序排序。
[by_array2], [sort_order2]——可选,和上面第二、第三参数意思完全一样,当排序关键字不只一个时,就需要添加这些参数。
接下来,还是用昨天的表格来进行示例讲解
一、将成绩表按语文成绩从高到低排序,当语文成绩有相同的再按数学成绩从高到低排序。
这里因为语文成绩是主关键字,所以第二参数选语文成绩所在的区域,因标题不需要参数排序,所以选取区域时,不能将表头标题选择进来。要求分数从高到低排序,所以第三参数指定为-1,数学成绩作为次要关键字,所以第四参数选择数学成绩所在区域,同样是降序排序,所以第五参数也指定为-1。如果还有更次要的排序关键字,可继续添加第六、第七参数,以此类推。
二、各列内容按指定顺序排序,如需要将语文成绩排在第一列,数学成绩排第二列,姓名排第三列,性别排第四列。
这里通过指定排序依据为横向一维数据,也就是一行,函数就自动识别为按列排序了。另外在这个示例中,体现了sortby函数的一个特性,那就是排序的关键字列或行可以不在需要排序的数据区域或数组中,这个特性我们可以利用来进行自定义排序,当然sort函数也是能实现自定义排序的,只是需要嵌套其它函数来实现,比如昨天示例中使用到的VSTACK函数等。
三、通过随机函数生成随机数,进行随机排序,达到抽签先后顺序的效果。
在本列中,通过COUNTA函数统计需要进行排序的姓名的个数,再通过RANDARRAY函数生成和姓名个数一样多的随机数,最后根据生成的随机数作为排序依据进行排序,就实现了这种类似抽签安排先后顺序的效果。
四、对数组进行排序
如有下面这样一个数组
{"姓名","性别","语文成绩";"香寒","男",98;"新柔","女",88;"语蓉","男",87;"海安","女",98;"夜蓉","女",86;"涵柏","男",86}
这个数组相当于一个7行3列的表格,第一行为标题,分别是姓名、性别、语文成绩,现要根据第三列语文成绩的分数进行从高到低的排序,我们来看具体操作。
在本例中想要讲的一个点是SORTBY的排序依据是要依据哪一列或哪一行,就直接选择这一列或行,像对这种常量数组或内存数组排序,并不能直接选择到具体哪一行或列,这就需要嵌套INDEX来取某一行或列。
总的来说,个人觉得SORT函数和SORTBY函数各有优劣,如SORT函数进行自定义排序就没有SORTBY函数方便,而SORTBY函数在对常量数组及内存数组的排序上又没有SORT函数方便,所以大家在使用过程中可根据具体情况来选择。
评论 (0)