Excel提取不重复数据:数组去重项的函数方法

讲清在Excel里用函数提取一列数据中不重复的值的方法:新版用UNIQUE,老版用INDEX、MATCH与COUNTIF组合公式,并给出动手前的检查项和结果核对方法。

如果你手里有一列客户名单,同一个名字出现了好几次,想让每个名字只列一遍,很多人下意识是手动删。数据一多,这件事就容易出错:漏删、看漏,或者空格和大小写没统一,最后结果对不上。

更常见的需求是把一列数据去重,得到一个只含不同值的新列表,原数据保持不动。这篇文章写给经常处理表格、又不想每次手工筛选的人,讲清楚在 Excel 里用函数提取不重复数据的几种办法,哪种适合哪个版本,以及结果出错时怎么查。

读完你能做三件事:判断自己该用哪个函数,写出可以直接粘贴的公式,并核对结果是否完整。

EXCEL 函数怎么提取一个数组中的一个重复项?一句话结论

一句话结论:Excel 2021 和订阅版 Excel 直接用 UNIQUE 函数,一步得到不重复的列表;更早的版本可以用 INDEX、MATCH 和 COUNTIF 组合成的数组公式,实现同样的效果。

你的情况推荐做法原因
使用 Excel 2021 或订阅版 Excel用 UNIQUE 函数一个公式输出全部去重结果,源数据变化后结果会自动更新
使用 2016、2019 等较早版本用 INDEX、MATCH 和 COUNTIF 组合公式这些版本没有 UNIQUE,组合公式可以逐个取出不重复的值
需要按字母或数字顺序排列在 UNIQUE 外面套一层 SORTUNIQUE 按出现顺序输出,不会自动排序
只想保留在原数据中只出现过一次的值使用 UNIQUE 的第三个参数这和去重不同:去重保留每个值一次,这里保留从未重复过的值
数据还在 PDF 表格里先导出为 Excel 再处理公式只能作用在单元格中,PDF 里的表格需要先转换

开始之前:先确认这几点

  • Excel 版本:在账户或关于页面查看版本号。UNIQUE 依赖新版本的动态数组功能,老版本打开带有它的表格时会显示名称错误,这时应改用组合公式。
  • 数据范围:确定要去重的是哪一列,范围里是否混入标题行和空行。空单元格会被当作一个值输出,标题行则会被当成普通数据。
  • 数据类型:数字和看起来像数字的文本在 Excel 里是不同的值,去重时会被分开。从其他系统复制来的数据经常有这个问题,先抽查几行。
  • 空格和大小写:“张三”和末尾多一个空格的“张三 ”不相同。UNIQUE 不区分英文大小写,所以“ABC”和“abc”会被视为同一个值。
  • 结果放在哪里:新版函数的结果会向下、向右溢出输出。溢出区域下方或右方如果已有内容,结果会被阻挡,所以要先腾出空间。

用 UNIQUE 函数提取不重复数据的步骤

  1. 选中源数据列 A2 到 A31,例如这是一份 30 行的客户名单,第一行是标题。在名称框中输入“名单”并回车,把这片区域命名为“名单”,之后的公式就可以直接引用它,不必反复输入区域地址。
  2. 选中一个空白单元格作为结果的左上角,例如 C2。去重结果会从这里开始向下排列。
  3. 输入公式 =UNIQUE(名单) 并按回车,结果会按数据出现的先后顺序列出每个不同的值。
  4. 如果需要排序,把公式改为 =SORT(UNIQUE(名单)) 再按回车,结果会按升序排列。
  5. 检查输出是否完整:结果行数应少于或等于源数据行数,且单元格中没有溢出提示。如果有,清空阻挡区域后重新输入公式。
  6. 如果需要统计每个值出现了几次,在结果旁边输入 =COUNTIF(名单,C2) 并向下填充,就能看到每个值的次数。
  7. 如果想保留一份不随源数据变化的结果,选中输出区域复制,再用选择性粘贴中的数值粘贴到别处。

Excel 2016、2019 的组合公式

较早版本没有 UNIQUE,可以在 C2 单元格输入下面的公式,然后向下填充:

=IFERROR(INDEX(名单,MATCH(0,COUNTIF(INDIRECT("C1:C"&ROW()-1),名单),0)),"")

这个公式的思路是:COUNTIF 统计名单中每个值在上方结果里是否已经出现过;MATCH 找出第一个还没出现过的值,也就是计数为 0 的位置;INDEX 把这个值取出来。INDIRECT 让结果区的范围随行号自动扩展,从 C1 开始一直到当前行的上一行。C1 必须是标题单元格,且内容不能与名单中的值相同。当没有更多不重复值时,公式会返回空白,IFERROR 负责屏蔽错误。

在一些老版本中,这个公式需要按 Ctrl+Shift+Enter 确认才能作为数组公式运行;较新的版本直接按回车即可。向下填充时,行数应大于或等于不同值的个数,多出的行会显示为空白。

做完后逐项核对

检查项怎么看有问题怎么办
不同值的数量源数据无空单元格时,用 =SUMPRODUCT(1/COUNTIF(名单,名单)) 算出不同值个数,与结果行数对比对不上时检查是否有空格、文本型数字或多余的标题行
是否漏掉值在结果旁用 COUNTIF 统计每个值的次数,确认每个结果都能在源数据中找到检查“名单”命名的区域是否少选了行
是否误合并或误分开查看大小写不同或首尾带空格的值是否被合并或分开用 TRIM 清理空格;如果需要区分大小写,要改用其他公式
是否有错误值查找溢出提示、#NAME?和#N/A溢出就清空阻挡区域;名称错误通常是版本问题;组合公式末尾的空白不是错误
结果会不会更新修改源数据中的一个值,观察结果是否变化如果结果已粘贴为数值,就不会更新,需要重新生成

如果源数据来自 OCR 识别或机器翻译,去重前后都应核对重要内容,尤其是人名、编号和金额。

❓ 常见问题(FAQ)

1. 数据在 PDF 表格里,怎么去重?

先把 PDF 里的表格转成 Excel。如果是扫描件,需要先做 OCR 识别,再核对识别结果,因为识别可能出错。OmniDoc 桌面客户端的 PDF 编辑器支持 OCR,也能把 PDF 导出为 Excel,下载地址是 download.omnidoc.top。导出后,再按本文的方法去重。

2. 去重后怎么看每个值出现了几次?

在结果旁边用 COUNTIF,例如 =COUNTIF(名单,C2),向下填充即可。这一列数字就是每个值在源数据中的出现次数。

3. 只想找出重复的记录,而不是去重,怎么办?

找重复是另一个需求。可以在源数据旁边输入 =COUNTIF(名单,A2),结果大于 1 的行就是重复出现的记录,再用筛选功能把这些行显示出来。

4. 结果比预期少了一个值,或者多了一个空白,是什么原因?

常见原因有三类:一是某些值末尾带空格,看起来一样却被当成不同的值;二是数字和文本型数字混在一起;三是源数据范围里包含了空单元格。先用 TRIM 处理空格,再检查数字格式,最后确认“名单”命名的区域是否正确。

📝 总结

EXCEL 函数怎么提取一个数组中的一个重复项,关键是先看版本:新版用 UNIQUE,老版用 INDEX、MATCH 和 COUNTIF 组合公式。动手前检查空格、数据类型和引用范围,完成后用 COUNTIF 对照结果,就能确认去重是否完整。

打开 OmniDoc,把 PDF 内容导出为可编辑文件

更新于 2026-11-04