Excel 365 SORTBY函数完全指南 – 多依据排序、自定义顺序,比SORT更强大
Excel 365 SORTBY函数完全指南 – 多依据排序、自定义顺序,比SORT更强大
SORT只能按数组内部的列排序?SORTBY打破这个限制!按外部数组排序、多依据一次搞定、自定义排序顺序,这才是排序的终极形态!
一、SORTBY vs SORT,区别在哪?
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
一句话:SORT够用就用SORT,需要外部依据或多条件就用SORTBY!
二、基础语法
=SORTBY(数组,排序依据1,[顺序1],[排序依据2],[顺序2], ...)
参数说明
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
三、场景一:按外部列排序(SORTBY核心能力)
示例:只显示姓名,但按工资降序排列
数据:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
=SORTBY(A2:A100,C2:C100,-1)
结果:
李四张三王五
只返回姓名列,但按C列(工资)降序排列。SORT做不到这个!
四、场景二:多依据排序(最常用!)
示例:先按部门升序,再按工资降序
=SORTBY(A2:D100,B2:B100,1,C2:C100,-1)
效果:
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
部门相同时,工资高的排前面,一行公式搞定!
示例:三个排序依据
=SORTBY(A2:E100,B2:B100,1,C2:C100,-1,D2:D100,1)
部门升序 → 工资降序 → 入职日期升序,三级排序一次写完!
五、场景三:自定义排序顺序(SORTBY独有!)
这是SORTBY最强大的功能,SORT完全做不到!
示例:按自定义部门顺序排序
需求: 销售部 → 技术部 → 财务部 → 行政部
=SORTBY(A2:D100,MATCH(B2:B100,{"销售部","技术部","财务部","行政部"},0))
原理:
-
MATCH返回每个部门在数组中的位置(销售部=1,技术部=2,财务部=3…) -
SORTBY按这个位置数字排序 = 按自定义顺序排序
示例:按星期自定义顺序排序
=SORTBY(A2:D100,MATCH(E2:E100,{"周一","周二","周三","周四","周五","周六","周日"},0))
示例:按优先级自定义排序
=SORTBY(A2:D100,MATCH(C2:C100,{"紧急","高","中","低"}, 0))
任务按紧急→高→中→低顺序排列!
六、场景四:随机排序(抽签/随机分组)
示例:随机打乱名单顺序
=SORTBY(A2:A50,RANDARRAY(49))
每次按 F9 刷新,顺序随机变化,完美用于抽签!
示例:随机分组(10人分2组)
=LET( names, A2:A11, randomOrder, SORTBY(names, RANDARRAY(10)), HSTACK( TAKE(randomOrder,5), DROP(randomOrder,5) ))
七、场景五:按绝对值排序
示例:按盈亏金额的绝对值排序(不管正负,影响大的排前面)
=SORTBY(A2:D100,ABS(C2:C100),-1)
八、场景六:按字符串长度排序
示例:按商品名称长度升序排列
=SORTBY(A2:D100,LEN(A2:A100),1)
示例:按备注内容长度降序(内容多的排前面)
=SORTBY(A2:D100,LEN(E2:E100),-1)
九、场景七:按计算结果排序
示例:按完成率(实际/目标)降序排列
=SORTBY(A2:D100,C2:C100/D2:D100,-1)
不需要辅助列,直接用公式作为排序依据!
示例:按距今天数升序(最近的排前面)
=SORTBY(A2:D100,ABS(TODAY()-D2:D100),1)
示例:按年龄排序(根据出生日期计算)
=SORTBY(A2:D100,DATEDIF(C2:C100,TODAY(),"Y"),-1)
十、场景八:结合FILTER筛选后多依据排序
示例:销售部员工,按工资降序、入职日期升序
=LET( filtered,FILTER(A2:E100,B2:B100="销售部"), SORTBY( filtered, FILTER(C2:C100,B2:B100="销售部"),-1, FILTER(D2:D100,B2:B100="销售部"),1 ))
示例:工资>8000的员工,按部门升序+工资降序
=LET( cond, C2:C100>8000, SORTBY( FILTER(A2:D100,cond), FILTER(B2:B100,cond),1, FILTER(C2:C100,cond),-1 ))
十一、场景九:动态排行榜(带序号)
示例:销售额实时排行榜
=LET( sorted, SORTBY(A2:C100,C2:C100,-1), HSTACK(SEQUENCE(ROWS(sorted)), sorted))
效果:
|
|
|
|
|
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
数据更新,排名自动刷新!
十二、场景十:按多列组合值排序
示例:按年份+月份排序(年月组合)
=SORTBY(A2:D100,YEAR(E2:E100)*100+MONTH(E2:E100),1)
将年月合并成数字(如202401),按此数字排序,实现按年月顺序排列。
示例:按姓氏+名字排序
=SORTBY(A2:D100,LEFT(A2:A100,1),1, MID(A2:A100,2,10),1)
先按姓氏排,姓氏相同再按名字排。
十三、实战案例
案例1:项目任务优先级排序
=SORTBY(A2:E100,MATCH(C2:C100, {"紧急","高","中","低"}, 0),1,D2:D100,1)
先按优先级(自定义顺序),再按截止日期升序。
案例2:学生成绩综合排名
=LET( data, A2:F50, totalScore, D2:D50+E2:E50+F2:F50, sorted,SORTBY(data,totalScore,-1), HSTACK(SEQUENCE(ROWS(sorted)),sorted))
按总分降序,自动生成排名序号。
案例3:库存管理(按紧急程度排序)
=SORTBY(A2:E100,C2:C100/D2:D100,1, // 库存率升序(越低越紧急)E2:E100,-1 // 销量降序(卖得多的优先补))
十四、常见问题
Q1:SORTBY和SORT如何选择?
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Q2:排序依据数组大小不匹配?
A:排序依据数组的行数必须与数据数组的行数相同。
Q3:自定义顺序中有未匹配的值?
A:MATCH找不到时返回#N/A,可用IFERROR处理:
=SORTBY(A2:D100,IFERROR(MATCH(B2:B100,{"销售部","技术部","财务部"},0),99))
未匹配的值排到最后(99)。
Q4:多依据排序时顺序写反了?
A:SORTBY的多依据是从左到右优先级递减,第一个依据优先级最高,与SORT嵌套相反,更符合直觉。
十五、SORTBY高级技巧速查
|
|
|
|---|---|
|
|
=SORTBY(A:C, D:D, -1) |
|
|
=SORTBY(A:D, B:B, 1, C:C, -1) |
|
|
=SORTBY(A:D, MATCH(B:B, {顺序数组}, 0)) |
|
|
=SORTBY(A:D, RANDARRAY(ROWS(A:D))) |
|
|
=SORTBY(A:D, ABS(C:C), -1) |
|
|
=SORTBY(A:D, C:C/D:D, -1) |
十六、小结
SORTBY是Excel 365排序函数的终极形态:
-
✅ 按任意外部数组排序 -
✅ 多依据排序,逻辑清晰 -
✅ 自定义排序顺序(配合MATCH) -
✅ 随机排序(配合RANDARRAY) -
✅ 按计算结果排序,无需辅助列
记住:简单排序用SORT,复杂排序用SORTBY!
💡 提示:SORTBY是Excel 365和Excel 2021新增函数,老版本Excel无法使用。
📌 下期预告:SEQUENCE函数 – 序列生成神器,一行公式生成任意数列!
夜雨聆风