乐于分享
好东西不私藏

Excel 365 SORTBY函数完全指南 – 多依据排序、自定义顺序,比SORT更强大

Excel 365 SORTBY函数完全指南 – 多依据排序、自定义顺序,比SORT更强大

Excel 365 SORTBY函数完全指南 – 多依据排序、自定义顺序,比SORT更强大

SORT只能按数组内部的列排序?SORTBY打破这个限制!按外部数组排序、多依据一次搞定、自定义排序顺序,这才是排序的终极形态!

一、SORTBY vs SORT,区别在哪?

对比项
SORT
SORTBY
排序依据
数组内部的列
任意外部数组
多依据排序
需要嵌套,顺序反直觉
一次写完,逻辑清晰
自定义顺序
❌ 不支持
✅ 配合MATCH实现
按外部列排序
❌ 不支持
✅ 核心能力
随机排序
需要辅助
✅ 配合RANDARRAY

一句话:SORT够用就用SORT,需要外部依据或多条件就用SORTBY!


二、基础语法

=SORTBY(数组,排序依据1,[顺序1],[排序依据2],[顺序2], ...)

参数说明

参数
必填
说明
数组
要排序的数据区域
排序依据1
第一个排序依据(数组)
顺序1
1=升序(默认),-1=降序
排序依据2
第二个排序依据(数组)
顺序2
1=升序(默认),-1=降序
可继续添加更多排序依据

三、场景一:按外部列排序(SORTBY核心能力)

示例:只显示姓名,但按工资降序排列

数据:

A(姓名)
B(部门)
C(工资)
张三
销售部
9000
李四
技术部
15000
王五
财务部
8000
=SORTBY(A2:A100,C2:C100,-1)

结果:

李四张三王五

只返回姓名列,但按C列(工资)降序排列。SORT做不到这个!


四、场景二:多依据排序(最常用!)

示例:先按部门升序,再按工资降序

=SORTBY(A2:D100,B2:B100,1,C2:C100,-1)

效果:

姓名
部门
工资
赵六
财务部
12000
王五
财务部
8000
李四
技术部
15000
张三
技术部
9000
陈七
销售部
11000
刘八
销售部
7000

部门相同时,工资高的排前面,一行公式搞定!

示例:三个排序依据

=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))

效果:

排名
姓名
部门
销售额
1
李四
销售部
98000
2
张三
销售部
85000
3
王五
技术部
72000

数据更新,排名自动刷新!


十二、场景十:按多列组合值排序

示例:按年份+月份排序(年月组合)

=SORTBY(A2:D100,YEAR(E2:E100)*100+MONTH(E2:E100),1)

将年月合并成数字(如202401),按此数字排序,实现按年月顺序排列。

示例:按姓氏+名字排序

=SORTBY(A2:D100,LEFT(A2:A100,1),1MID(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如何选择?

场景
推荐
按数组内部的列排序
SORT(更简洁)
按外部数组排序
SORTBY
多依据排序
SORTBY(更直观)
自定义顺序
SORTBY + MATCH
随机排序
SORTBY + RANDARRAY

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函数 – 序列生成神器,一行公式生成任意数列!