Menu

Excel 删除重复值:按钮与公式两种方法

选中数据并点击 数据 > 删除重复值,就地删除重复的行;或者用 =UNIQUE(A2:A9) 得到一份干净的副本并保留原始数据。查找、标记和统计重复项,以及按两列删除重复值。

本页的每张表格都是实时的:修改数字或公式,就会重新计算。

在 Excel 中删除重复值:选中数据,点击 数据 > 删除重复值,选择必须相同的列,然后按“确定”:Excel 会删除每一个重复的行,只保留第一行。如果想保留原始列表并得到一份干净的副本,在空列中输入 =UNIQUE(A2:A9)。

有重复的客户名单
C2
ABC
1CustomerWithout duplicates
2AnaAna
3BenBen
4CaraCara
5AnaDan
6DanEve
7Ben
8Ana
9Eve
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

A 列中高亮的单元格(第 5、7、8 行)就是重复项:删除重复值会删掉的正是这些行。C 列是去掉它们之后的列表:Ana、Ben、Cara、Dan、Eve。把 A6 改成 Ana,高亮和列表都会更新;如果用按钮,则需要再执行一次。

用“删除重复值”按钮去重

  1. 点击数据中的任意单元格。Excel 会选中它周围的整块数据;如果只处理工作表的一部分,就自己选中那个区域。
  2. 选择 数据 > 删除重复值(在“数据工具”组中)。Windows 上的按键顺序是 Alt、A、M。在 Excel 表格中,表设计 选项卡上也有同一个按钮。
  3. 如果第 1 行是列名,保持 数据包含标题 的勾选,这样标题行永远不会参与比较。
  4. 勾选必须全部相同才算两行重复的列。勾选所有列时,只删除完全相同的行。
  5. 按 确定。Excel 会报告找到并删除了多少个重复值,以及保留了多少个唯一值。

这个按钮做了什么,以及按下之前需要知道的事:

  • 它就地删除重复项,并把下方的单元格上移。只有选中的列会移动:选区以外的单元格留在原位,所以要选中表格的整个宽度,否则各行会错位。如果结果不对,立即按 Ctrl+Z(Mac 上按 Cmd+Z)撤销。
  • 它保留从上往下 第一次 出现的那一个。
  • 忽略大小写:ana 和 Ana 是重复的。
  • 它比较的是显示出来的值。同一个日期在一个单元格中显示为 3/15/2026、在另一个单元格中显示为 15-Mar-26,会被当作两个不同的值。

这个按钮不会留下它删掉了什么的记录。如果这一点很重要,先用公式标记重复项,查看之后再删除。

删除之前先找出重复项

用一列标记来显示哪些行是重复的。=COUNTIF($A$2:A2,A2)>1 在从顶部到当前行的范围内统计当前行的值。区域的起点 $A$2 是锁定的,终点 A2 不锁定,所以公式向下填充时区域会扩大:TRUE 表示“这个值在上面已经出现过”,正好就是删除重复值会删掉的那些行。

标记重复项
B2
ABC
1CustomerRepeat?Times in list
2AnaFALSE3
3BenFALSE2
4CaraFALSE1
5AnaTRUE3
6DanFALSE1
7BenTRUE2
8AnaTRUE3
9EveFALSE1
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

点击 B5:它的区域是 $A$2:A5,其中 Ana 出现了两次,所以 B5 为 TRUE。C 列使用固定区域 $A$2:$A$9,因此统计的是所有出现次数:每个 Ana 行都显示 3,Cara、Dan 和 Eve 显示 1。用 C 列找出重复项的 每一份,包括第一个;用 B 列只找出多余的那些。

要手动删除标记的行,打开 数据 > 筛选,把 B 列筛选为 TRUE,选中可见的行,右键点击并选择 删除行,然后清除筛选。如果想给重复项上色而不是标记,请看高亮重复项。

按两列删除重复值

只有 Name 和 City 都重复时,两行才算重复。在“删除重复值”对话框中,勾选这两列。用公式时,把两列都交给 UNIQUE:=UNIQUE(A2:B8) 比较的是整行。C 列中的标记用 COUNTIFS 做同样的事,它统计两个条件都匹配的行。

姓名和城市一起比较
E2
ABCDE
1NameCityRepeat?Unique rows
2AnaLimaFALSE
3BenOsloFALSE
4AnaRomeFALSE
5BenOsloTRUE
6CaraLimaFALSE
7AnaLimaTRUE
8DanRomeFALSE
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 E2 中把每一对 Name 和 City 列出一次。

Ana 出现了三次,但她只有一行是重复的:在 Rome 的 Ana 和在 Lima 的 Ana 是不同的行。C5 和 C7 为 TRUE。答案会溢出两列宽,所以 E 列和 F 列必须为空。

按一列去重并保留其他列

如果只由一列决定(每位客户一行,不论城市),在对话框中只勾选那一列。Excel 会保留每个名字的第一行及其所有列。公式版本保留名字首次出现的每一行:MATCH(A2:A8,A2:A8,0) 给出每个名字第一次出现的位置,只有在首次出现时它才等于该行自身的位置。

每位客户的第一行
D2
ABCDE
1NameCityNameCity
2AnaLimaAnaLima
3BenOsloBenOslo
4AnaRomeCaraLima
5BenOsloDanRome
6CaraLima
7AnaLima
8DanRome
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

结果是在 Lima 的 Ana、在 Oslo 的 Ben、在 Lima 的 Cara 和在 Rome 的 Dan。Ana 后面的城市(Rome、Lima)被去掉了,和按钮的做法一样。

排序后的列表,以及只出现一次的值

把 UNIQUE 放进 SORT,就能按字母顺序得到干净的列表。UNIQUE 的第三个参数 exactly_once 作用不同:设为 TRUE 时,它只返回从不重复的值,所以每个有重复的值都会完全消失,包括第一份。删除重复值没有这样的选项。

排序,以及只出现一次
C2
ABCDE
1CustomerSortedOnly once
2EveAnaCara
3BenBenDan
4CaraCara
5AnaDan
6DanEve
7Ben
8Ana
9Eve
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

C2 溢出 Ana、Ben、Cara、Dan、Eve。E2 只返回 Cara 和 Dan:Eve、Ben 和 Ana 各出现了两次。降序排列用 =SORT(UNIQUE(A2:A9),,-1)。关于这个函数本身的更多内容(包括 by_col)见 UNIQUE 一文。

统计有多少个重复项

删除重复值会删掉的行数,等于总行数减去唯一值的个数。ROWS(A2:A9) 统计行数,COUNTA(UNIQUE(A2:A9)) 统计不同客户的个数。要单独统计不同值的个数,请看统计唯一值。

有多少个重复项
C2
ABC
1CustomerRepeats
2Ana
3Ben
4Cara
5Ana
6Dan
7Ben
8Ana
9Eve
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 C2 中统计 A2:A9 中有多少行与上方某一行重复。

答案是 3。如果你已经有上一节中的标记列,=COUNTIF(B2:B9,TRUE) 也能统计出同样的重复项。

在 Excel 2019 及更早版本中删除重复值

UNIQUE、SORT 和 FILTER 需要 Excel 2021 或 Microsoft 365。在 Excel 2019 及更早版本中,有两种保留原始数据的方法:

  1. 高级筛选。 选中这一列,选择 数据 > 排序和筛选 > 高级,选择 将筛选结果复制到其他位置,在 复制到 中选一个目标单元格,勾选 选择不重复的记录,然后按“确定”。得到的副本是固定的列表;数据改变后需要重新筛选。
  2. 向下填充的公式。 把下面的公式放在 C2,因为在旧版 Excel 中它是数组公式,所以要按 Ctrl+Shift+Enter(Mac 上按 Cmd+Shift+Enter)确认,然后向下填充,直到出现空白:
=IFERROR(INDEX($A$2:$A$9,MATCH(0,COUNTIF($C$1:C1,$A$2:$A$9),0)),"")

每一行都查找 A2:A9 中第一个还不在其上方列表里的值。Google Sheets 也有 =UNIQUE(A2:A9),但它在那里区分大小写:ana 和 Ana 都会保留。

为什么删除重复值会漏掉一些重复项

两个看起来一样的单元格,如果其中一个末尾有空格,就不算重复。删除重复值和 UNIQUE 都是逐个字符比较文本(只忽略大小写),所以 Ana 和末尾带空格的 Ana 仍是两个条目。

隐藏的空格
C2
ABCDE
1CustomerUNIQUEUNIQUE of TRIM
2AnaAnaAna
3Ana Ana Ben
4BenBenCara
5 Ben Ben
6CaraCara
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

C2 溢出全部五个条目,因为空格让这些副本变得不同。TRIM 会去掉两端的空格,所以 E2 返回 Ana、Ben 和 Cara。对导入的数据使用按钮之前,先加一列并向下填充 =TRIM(A2),把它以值的形式粘贴覆盖原数据(开始 > 粘贴 > 粘贴值),然后再删除重复值。从网页复制的数据还可能包含不间断空格,TRIM 去不掉它们;=TRIM(SUBSTITUTE(A2,CHAR(160)," ")) 两者都能处理。

常见问题

Excel 中如何删除重复值?

点击数据中的一个单元格,选择 数据 > 删除重复值,勾选必须全部相同才算重复的列,然后按“确定”。Excel 会保留每行第一次出现的那一行,删除其余的。

Excel 中如何在不删除原始数据的情况下去重?

在空列中使用公式:=UNIQUE(A2:A9) 把每个值列出一次,A2:A9 保持原样。UNIQUE 需要 Excel 2021 或 Microsoft 365;在旧版本中,使用 数据 > 排序和筛选 > 高级,勾选 选择不重复的记录 和 将筛选结果复制到其他位置。

删除重复值会保留哪一个?

保留第一个,从选区顶部开始算。如果想保留最后一次出现的,先对数据排序,让要保留的行排在前面,再执行删除重复值。

为什么删除重复值没有删掉所有重复项?

因为这些值并不完全相同:末尾的空格(Ana 与 Ana)、不间断空格,或同一个日期显示为两种不同格式,都会让两个单元格看起来相同实际却不同。先用 =TRIM(A2) 这样的辅助列清理一下。大小写不影响:ana 和 Ana 算作重复。

Excel 中如何统计重复项?

=COUNTIF($A$2:$A$9,A2) 给出 A2 中的值出现的次数。删除重复值会删掉的行数是 =ROWS(A2:A9)-COUNTA(UNIQUE(A2:A9))。

Coddy 编程语言插图

和 Coddy 一起学编程

开始