SORTBY 函数¶
函数概述¶
SORTBY 函数用于按一个或多个“排序依据”对数据进行排序,并返回排序后的结果(动态数组)。它的特点是:
- 排序依据可以不在原数据区域内(只要与原数组行数/列数匹配即可)。
- 支持多级排序(先按第1依据,再按第2依据……)。
- 返回的是新结果,不会直接改动原数据。
适用场景:成绩表按总分+单科排序、订单按日期+金额排序、按自定义权重排序等。
基础语法¶
参数说明¶
| 参数 | 是否必填 | 说明 |
|---|---|---|
| array | 是 | 要排序并返回的原数组/区域 |
| by_array1 | 是 | 第1排序依据数组/区域(行数或列数需与 array 对齐) |
| sort_order1 | 否 | 第1依据排序方式:1 升序,-1 降序(默认 1) |
| by_array2... | 否 | 第2、第3…排序依据(用于多级排序) |
| sort_order2... | 否 | 对应每个依据的排序方式 |
补充说明(对齐规则):
- 若
array是多行多列的数据表,常见做法是by_array选同样“行数”的一列(按行排序)。 - 若
array是单行数据(横向),by_array通常也是同样“列数”的一行(按列排序)。
基础用法示范¶
示例数据¶
假设有如下表格(A1:D6):
| 姓名 | 部门 | 业绩 | 入职日 |
|---|---|---|---|
| 张三 | 销售 | 120 | 2023-03-01 |
| 李四 | 市场 | 95 | 2022-11-15 |
| 王五 | 销售 | 120 | 2021-07-20 |
| 赵六 | 研发 | 110 | 2024-01-10 |
| 钱七 | 市场 | 95 | 2020-05-08 |
用法一¶
按“业绩”降序排列整表
含义:返回 A2:D6 的排序结果,排序依据是 C2:C6(业绩),-1 表示降序。
用法二¶
业绩降序,业绩相同按入职日升序
逻辑:
- 先按业绩从高到低;
- 若业绩相同,再按入职日从早到晚。
用法三¶
只返回两列,并按另一列排序
只想返回“姓名、业绩”两列,但仍按“入职日”升序排序:
如果要返回两列组合,可用 CHOOSECOLS(新函数):
含义:先从表里取第1列和第3列(姓名、业绩),再按入职日排序输出。
用法四¶
按自定义顺序排 需求:部门顺序固定为:研发 → 销售 → 市场。可用 MATCH 生成排序权重:
解释:
- MATCH 返回“部门在自定义序列中的位置”作为权重;
- 再按权重升序,达到自定义排序效果。
总结¶
SORTBY 的核心是:返回 array 的排序结果,但排序规则由 by_array 决定。掌握两点就能覆盖大多数场景:
- by_array 与 array 的维度要对齐(按行或按列排序)。
- 多级排序按“依据1、依据2...”依次写下去,每个依据都可独立设置升降序。
如果你经常需要“按隐藏字段排序”“按自定义顺序排”“多条件排序”,SORTBY 会比传统排序、更灵活也更易复用。