夜雨聆风学习资料网

ARTICLE · 1119717

Excel的UNIQUE、SORT、TAKE、DROP、GROUPBY函数用法

Excel的UNIQUE、SORT、TAKE、DROP、GROUPBY函数用法
今天咱们把 UNIQUE、SORT、TAKE、DROP、GROUPBY 这五个函数一次讲透。
先说一句:这些基本都是 动态数组函数,公式只写在一个单元格,回车后自动“溢出”结果;如果出现 #SPILL!,说明下方或右侧有东西挡路了。
版本提醒:UNIQUE / SORT / TAKE / DROP 在 Microsoft 365、Excel 2021 里基本都有;GROUPBY 比较新,旧版 Excel 或部分 WPS 可能没有。

一、先准备一张示例数据

咱们统一用这张销售明细表,放在 A1:E11:

日期地区产品销售员销售额
2026/1/1华东手机张三1200
2026/1/1华南电脑李四5600
2026/1/2华东电脑王五4300
2026/1/2华北手机赵六900
2026/1/3华南手机张三1500
2026/1/3华东平板李四2200
2026/1/4华北电脑王五6100
2026/1/4华南平板赵六1800
2026/1/5华东手机张三1300
2026/1/5华北手机李四950

下面所有例子,都围着这张表转。


1. UNIQUE:去重,提取唯一值

函数作用

UNIQUE 用来把重复内容去掉,返回唯一值或唯一行。比如提取不重复的地区、不重复的产品、不重复的“地区+产品”组合。

=UNIQUE(array, [by_col], [exactly_once])

  • array:必填,要去重的区域或数组。

  • by_col:可选。

    • 省略或 FALSE:按行比较,返回唯一行。

    • TRUE:按列比较,返回唯一列。

  • exactly_once:可选。

    • 省略或 FALSE:返回所有不同项。

    • TRUE:只返回“只出现过一次”的项目。

示例 1:提取不重复地区

=UNIQUE(B2:B11)

结果:

地区
华东
华南
华北

它会按首次出现的顺序,把重复的“华东、华南、华北”只保留一次。

示例 2:提取“地区+产品”的唯一组合

=UNIQUE(B2:C11)

结果:

地区产品
华东手机
华南电脑
华东电脑
华北手机
华南手机
华东平板
华北电脑
华南平板

注意,这里不是单列去重,而是把“地区+产品”当成一个整体组合去重。后面重复出现的“华东+手机”“华北+手机”就不会再出现。


2. SORT:排序,返回新数组

函数作用

SORT 可以对一个区域或数组排序,返回排序后的结果,但不会改动原数据。它是“生成一份排好序的副本”。

=SORT(array, [sort_index], [sort_order], [by_col])

  • array:必填,要排序的区域或数组。

  • sort_index:可选,按第几列或第几行排序,省略默认第 1 列/行。

  • sort_order:可选。

    • 1 或省略:升序。

    • -1:降序。

  • by_col:可选。

    • 省略或 FALSE:按行排序,也就是我们最常见的“按某列排序”。

    • TRUE:按列排序。

示例 1:按销售额降序排序

=SORT(A2:E11,5,-1)

解释:对 A2:E11 排序,按第 5 列“销售额”降序。

结果:

日期地区产品销售员销售额
2026/1/4华北电脑王五6100
2026/1/1华南电脑李四5600
2026/1/2华东电脑王五4300
2026/1/3华东平板李四2200
2026/1/4华南平板赵六1800
2026/1/3华南手机张三1500
2026/1/5华东手机张三1300
2026/1/1华东手机张三1200
2026/1/5华北手机李四950
2026/1/2华北手机赵六900

示例 2:多条件排序,先按地区升序,再按销售额降序

=SORT(A2:E11,{2,5},{1,-1})

解释:第 2 列地区升序,第 5 列销售额降序。

结果大致如下,具体地区中文顺序会受你的 Excel 排序语言设置影响:

日期地区产品销售员销售额
2026/1/4华北电脑王五6100
2026/1/5华北手机李四950
2026/1/2华北手机赵六900
2026/1/2华东电脑王五4300
2026/1/3华东平板李四2200
2026/1/5华东手机张三1300
2026/1/1华东手机张三1200
2026/1/1华南电脑李四5600
2026/1/4华南平板赵六1800
2026/1/3华南手机张三1500

这个写法很实用,做多关键字排序特别方便。


3. TAKE:从开头或末尾取行/列

函数作用

TAKE 就是从数组或区域里“拿一部分出来”。可以从开头拿,也可以从末尾拿;可以拿行,也可以拿列。

=TAKE(array, rows, [columns])

  • array:必填,数据区域。

  • rows:必填。

    • 正数:从开头取几行。

    • 负数:从末尾取几行。

  • columns:可选。

    • 正数:从开头取几列。

    • 负数:从末尾取几列。

    • 省略:取所有列。

示例 1:取前 3 行

=TAKE(A2:E11,3)

结果:

日期地区产品销售员销售额
2026/1/1华东手机张三1200
2026/1/1华南电脑李四5600
2026/1/2华东电脑王五4300

示例 2:取最后 2 行、最后 3 列

=TAKE(A2:E11,-2,-3)

解释:-2 表示从末尾取 2 行,-3 表示从末尾取 3 列。原区域是 A:E,最后 3 列就是 C、D、E,也就是产品、销售员、销售额。

结果:

产品销售员销售额
手机张三1300
手机李四950

TAKE 经常和 SORT 搭配,比如 TAKE(SORT(...),3) 就是“排序后取前三名”。


4. DROP:从开头或末尾删除行/列

函数作用

DROP 和 TAKE 像一对反义词。TAKE 是取一部分,DROP 是删掉一部分,返回剩下的内容。

=DROP(array, rows, [columns])

  • array:必填,数据区域。

  • rows:必填。

    • 正数:从开头删几行。

    • 负数:从末尾删几行。

    • 0:不删行。

  • columns:可选。

    • 正数:从开头删几列。

    • 负数:从末尾删几列。

    • 0 或省略:不删列。

示例 1:去掉表头

=DROP(A1:E11,1)

解释:从 A1:E11 开头删掉 1 行,也就是删掉表头,返回纯数据区。

结果就是原来的 A2:E11:

日期地区产品销售员销售额
2026/1/1华东手机张三1200
2026/1/1华南电脑李四5600
2026/1/2华东电脑王五4300
2026/1/2华北手机赵六900
2026/1/3华南手机张三1500
2026/1/3华东平板李四2200
2026/1/4华北电脑王五6100
2026/1/4华南平板赵六1800
2026/1/5华东手机张三1300
2026/1/5华北手机李四950

示例 2:去掉最后一列“销售额”

=DROP(A2:E11,0,-1)

解释:0 表示不删行,-1 表示从末尾删 1 列,也就是删掉 E 列销售额。

结果:

日期地区产品销售员
2026/1/1华东手机张三
2026/1/1华南电脑李四
2026/1/2华东电脑王五
2026/1/2华北手机赵六
2026/1/3华南手机张三
2026/1/3华东平板李四
2026/1/4华北电脑王五
2026/1/4华南平板赵六
2026/1/5华东手机张三
2026/1/5华北手机李四

DROP 很适合做数据清洗,比如去表头、去合计列、去辅助列。


5. GROUPBY:分组聚合,类似“函数版数据透视表”

函数作用

GROUPBY 可以按一个或多个字段分组,然后对值字段做求和、计数、平均、最大、最小等聚合。你可以把它理解成“不用拖数据透视表,直接用公式生成汇总表”。

=GROUPBY(row_fields, values, function, [field_headers], [total_depth], [sort_order], [filter_array], [field_relationship])

常用参数解释:

  • row_fields:分组字段,可以是一列,也可以是多列。比如按地区分组,或者按地区+产品分组。

  • values:要聚合的值字段,比如销售额。

  • function:聚合方式,比如 SUM、AVERAGE、COUNT、MAX、MIN、PERCENTOF 等。

  • field_headers:标题处理方式。

    • 0:没有标题。

    • 1:有标题但不显示。

    • 2:没有标题但自动生成。

    • 3:有标题且显示。
      咱们的示例数据带表头,所以常用 3。

  • total_depth:总计/小计控制。

    • 0:不要总计。

    • 1:底部显示总计。
      其他层级不同版本略有差异,日常先用 0 或 1。

  • sort_order:排序方式。正数升序,负数降序,数字代表结果中的第几列。比如 -3 表示按第 3 列降序。

  • filter_array:筛选数组,可选。

  • field_relationship:多分组字段时的关系模式,可选,日常先不用深究。

示例 1:按地区汇总销售额

=GROUPBY(B1:B11,E1:E11,SUM,3)

解释:按 B 列地区分组,对 E 列销售额求和,3 表示有标题且显示。

结果:

地区销售额
华东9000
华南8900
华北7950

验算一下:
华东 = 1200 + 4300 + 2200 + 1300 = 9000
华南 = 5600 + 1500 + 1800 = 8900
华北 = 900 + 6100 + 950 = 7950

示例 2:按地区+产品汇总销售额,并按销售额降序

=GROUPBY(B1:C11,E1:E11,SUM,3,0,-3)

解释:

  • B1:C11:按地区和产品两列分组。

  • E1:E11:对销售额求和。

  • 3:有标题且显示。

  • 0:不显示总计。

  • -3:按结果第 3 列,也就是销售额,降序排序。

结果:

地区产品销售额
华北电脑6100
华南电脑5600
华东电脑4300
华东手机2500
华东平板2200
华北手机1850
华南平板1800
华南手机1500

这个公式特别像数据透视表,但它是动态的。源数据一改,结果自动更新。

最后给你几个组合套路

  1. 取销售额前 3 名

=TAKE(SORT(A2:E11,5,-1),3)

  1. 提取唯一地区,并按地区排序

=SORT(UNIQUE(B2:B11))

  1. 按地区汇总销售额,并按销售额降序

=GROUPBY(B1:B11,E1:E11,SUM,3,0,-2)

  1. 去掉表头,再取前 5 行

=TAKE(DROP(A1:E11,1),5)

记住一句话:
UNIQUE 负责去重,SORT 负责排序,TAKE 负责取,DROP 负责删,GROUPBY 负责分组汇总。
这几个函数一旦组合起来,做动态报表会非常爽。

相关学习资料