excel 里提取不重复数据,最快的方法就是用 unique 函数:随便点个空白单元格输入 =unique(数据区域),按回车之后结果会自动往下溢出生成一整列。注意这个功能目前仅支持 microsoft 365 版本的 excel。咱们平时说的“不重复”其实分两种情况:一种是把所有重复项合并,得到一份全是唯一值的列表;另一种是只保留原始数据里从头到尾只出现过一次的值,下面把两种用法都给你讲透。
第一步:选好源数据和输出位置
先确认要提取的区域没有合并单元格,旁边留出一块空白区域放结果。示例里原始名单放在 A2:A10,结果从 C2 开始输出;如果 C 列下面已经有内容,后续很容易弹出 #SPILL! 报错,所以这步先把输出的区域清空。

第二步:输入 UNIQUE 公式
在结果区域的第一个单元格里输入 =UNIQUE(A2:A10),按回车就行。Excel 会自动把 A2:A10 里重复的名称合并成唯一列表,你只需要在第一个结果单元格写公式,下面的所有结果都会靠动态数组自动填充。注意公式覆盖的区域里别手动输内容,不然会挡住溢出的结果。

UNIQUE 的完整语法是 =UNIQUE(array,[by_col],[exactly_once])。平时按列提取的时候只用填第一个参数就够,后两个参数只有需要按列比较、或者只想取只出现一次的数据时才需要补充。
| 参数 | 是否必填 | 用法 |
|---|---|---|
array |
必填 | 要去重的单元格区域,例如 A2:A10 或 A2:C10
|
[by_col] |
可选 |
FALSE 或省略表示按行比较;TRUE 表示按列比较 |
[exactly_once] |
可选 |
FALSE 或省略表示返回唯一列表;TRUE 表示只返回原数据中出现一次的值 |
第三步:只保留出现一次的值
要是你要的“不重复”指的是“原表里从头到尾只出现过一次的数据”,公式得改成 =UNIQUE(A2:A10,,TRUE)。中间第二个参数留空,代表还是按行处理数据;第三个参数填 TRUE 之后,出现两次及以上的值都会被筛掉,只留下真正只出现过一次的项目。

这步最容易搞混:=UNIQUE(A2:A10) 出来的是去重后的清单,重复值会保留1份;=UNIQUE(A2:A10,,TRUE) 才是只取出现过一次的数据。平时做库存编号、报销单号、报名名单排查的时候,先想清楚自己要的是哪种结果。
本文档主要介绍如何通过python对office excel进行读写操作,使用了xlrd、xlwt和xlutils模块。另外还演示了如何通过Tcl tcom包对excel操作。感兴趣的朋友可以过来看看
第四步:排序或提取多列记录
想让提取出来的结果直接排好序,可以把 UNIQUE 嵌套进 SORT 函数里,公式写 =SORT(UNIQUE(A2:A10)) 就行。如果要按整行记录去重,直接把参数区域换成多列,比如 =UNIQUE(A2:C10),Excel 会把 A 到 C 列的内容当成一整条记录来比对,不会只单独看某一列。

SORT 常用语法是 =SORT(array,[sort_index],[sort_order],[by_col])。只填第一个参数的话,Excel 会默认按第一列升序排列;要是想按第 2 列降序排列,直接写成 =SORT(UNIQUE(A2:C10),2,-1) 就可以。
| 写法 | 效果 |
|---|---|
=UNIQUE(A2:A10) |
把重复值合并成唯一列表 |
=UNIQUE(A2:A10,,TRUE) |
只返回出现一次的值 |
=SORT(UNIQUE(A2:A10)) |
提取后自动升序排列 |
=UNIQUE(A2:C10) |
按多列组合提取不重复记录 |
第五步:清掉挡住结果的内容
如果公式返回 #SPILL! 报错,先检查结果区域是不是有文字、空格、其他公式或者合并单元格挡住了动态数组的溢出路径。把阻挡的内容删掉,或者把公式换到更空的区域,结果就能正常展开。如果你用的是 WPS 或者更老版本的 Excel,先确认自己的软件支不支持 UNIQUE 这类动态数组函数;不支持的话,也可以点顶部“数据”选项卡里的“高级筛选”,勾选“选择不重复的记录”之后,把结果复制到新位置也能达到效果。

生成的不重复列表会跟着原数据的变化自动更新,比手动删重复项省事儿多了。要是想把结果固定下来,直接选中整个溢出结果区域复制,再用“选择性粘贴”选“值”,就能把公式转成普通的文本或者数字存下来。










