描述
使用此函数可以按一列或多列对范围或数组进行升序或降序动态排序。
句法
SORT(array, [sort_column1], [sort_order1], [sort_order2], [sort_order3])
输入
该函数接受以下参数:
| 姓名 | 必要 | 描述 | 有效输入 |
|---|---|---|---|
数组 |
是的 | 要排序的范围或数组。 | 单元格、单元格区域或公式,其结果可以是上述任何一种。 |
[sort_column1] |
不 | 排序依据的列号。第一列(A)为 1。 | 表示要排序的列的正整数,或者一个结果为正整数的公式。 |
[sort_order1] |
不 | 指定列的排序顺序。默认值为 1(按升序排序)。 | 值为 1(升序)或 -1(降序)的正整数,或结果为 1 或 -1 的公式。 |
[按列] |
不 | 如果排序要按列进行。默认值为 FALSE(按行垂直排序数据)。 | TRUE 或 1 = 按列排序。FALSE 或 0 = 按行排序,或使用能得出这些结果之一的公式。 |
实例
范例数据
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | 姓名 | 姓 | 时代 | 城市 | 薪水 |
| 2 | 约翰 | 史密斯 | 35 | 费城 | 75000 |
| 3 | 爱丽丝 | 约翰逊 | 28 | 芝加哥 | 65000 |
| 4 | 鲍勃 | 白色的 | 42 | 洛杉矶 | 85000 |
| 5 | 哈里 | 哈里森 | 33 | 芝加哥 | 70000 |
| 6 | 爱丽丝 | 克拉姆登 | 39 | 布鲁克林 | 72000 |
示例公式
| 用例 | 公式 | 结果与解释 | |||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 按指定列升序对数据集进行排序。 | =SORT(A2:E6, 3, 1) |
该公式按年龄升序对整个数据集进行排序。对于此数据集,它将返回以下内容:
|
|||||||||||||||||||||||||
| 按指定列升序对数据集进行排序,同时保留原始行关系。 | =SORT(A2:E6, 4, 1, 0) |
该公式按城市列(第 4 列)对整个范围进行升序排序,同时保留原始行关系。 对于此数据集,它将返回以下内容:
|
|||||||||||||||||||||||||
| 选择一部分单元格,然后按另一列对结果进行排序。 | =SORT(FILTER(A2:E6, C2:C6>30), 5, -1) |
此公式使用 FILTER 选择 30 岁以上的员工
|
|||||||||||||||||||||||||
| 生成一个不包含重复名称的姓名列表。 | =SORT(UNIQUE(A2:A6), 1, 1) |
该公式使用 UNIQUE 构建一个名称列表,其中每个名称在列表中只出现一次,然后按字母顺序对它们进行排序。对于此数据集,它将返回以下内容:
|
|||||||||||||||||||||||||
| 找出数据集中年龄最大的人的姓名。 | =TAKE(排序(A2:B6, 2, -1), 1, 1) |
该公式首先按年龄降序对数据进行排序,以便年龄最大的人(鲍勃,42 岁)排在第一位。TAKE然后返回第一行的 Name 值。对于此数据集,它将返回以下内容:
|
笔记
排序函数:
- 可以按指定顺序按多列排序。
- 既适用于静态范围,也适用于动态数组。
- 支持升序和降序排序。
使用技巧
- 如果您有标题行,并且不希望包含标题,请将数组值从下一行开始(例如,在上面的数据集中,从 A2 而不是 A1 开始)。
- SORT 函数可以与其他函数结合使用,包括:
相关功能
以下是 Workiva 电子表格中支持的其他数组公式函数。