在 Excel 中删除重复值:选中数据,点击 数据 > 删除重复值,选择必须相同的列,然后按“确定”:Excel 会删除每一个重复的行,只保留第一行。如果想保留原始列表并得到一份干净的副本,在空列中输入 =UNIQUE(A2:A9)。
| A | B | C | |
|---|---|---|---|
| 1 | Customer | Without duplicates | |
| 2 | Ana | Ana | |
| 3 | Ben | Ben | |
| 4 | Cara | Cara | |
| 5 | Ana | Dan | |
| 6 | Dan | Eve | |
| 7 | Ben | ||
| 8 | Ana | ||
| 9 | Eve |
A 列中高亮的单元格(第 5、7、8 行)就是重复项:删除重复值会删掉的正是这些行。C 列是去掉它们之后的列表:Ana、Ben、Cara、Dan、Eve。把 A6 改成 Ana,高亮和列表都会更新;如果用按钮,则需要再执行一次。
用“删除重复值”按钮去重
- 点击数据中的任意单元格。Excel 会选中它周围的整块数据;如果只处理工作表的一部分,就自己选中那个区域。
- 选择 数据 > 删除重复值(在“数据工具”组中)。Windows 上的按键顺序是 Alt、A、M。在 Excel 表格中,表设计 选项卡上也有同一个按钮。
- 如果第 1 行是列名,保持 数据包含标题 的勾选,这样标题行永远不会参与比较。
- 勾选必须全部相同才算两行重复的列。勾选所有列时,只删除完全相同的行。
- 按 确定。Excel 会报告找到并删除了多少个重复值,以及保留了多少个唯一值。
这个按钮做了什么,以及按下之前需要知道的事:
- 它就地删除重复项,并把下方的单元格上移。只有选中的列会移动:选区以外的单元格留在原位,所以要选中表格的整个宽度,否则各行会错位。如果结果不对,立即按 Ctrl+Z(Mac 上按 Cmd+Z)撤销。
- 它保留从上往下 第一次 出现的那一个。
- 忽略大小写:
ana和Ana是重复的。 - 它比较的是显示出来的值。同一个日期在一个单元格中显示为
3/15/2026、在另一个单元格中显示为15-Mar-26,会被当作两个不同的值。
这个按钮不会留下它删掉了什么的记录。如果这一点很重要,先用公式标记重复项,查看之后再删除。
删除之前先找出重复项
用一列标记来显示哪些行是重复的。=COUNTIF($A$2:A2,A2)>1 在从顶部到当前行的范围内统计当前行的值。区域的起点 $A$2 是锁定的,终点 A2 不锁定,所以公式向下填充时区域会扩大:TRUE 表示“这个值在上面已经出现过”,正好就是删除重复值会删掉的那些行。
| A | B | C | |
|---|---|---|---|
| 1 | Customer | Repeat? | Times in list |
| 2 | Ana | FALSE | 3 |
| 3 | Ben | FALSE | 2 |
| 4 | Cara | FALSE | 1 |
| 5 | Ana | TRUE | 3 |
| 6 | Dan | FALSE | 1 |
| 7 | Ben | TRUE | 2 |
| 8 | Ana | TRUE | 3 |
| 9 | Eve | FALSE | 1 |
点击 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 做同样的事,它统计两个条件都匹配的行。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Name | City | Repeat? | Unique rows | |
| 2 | Ana | Lima | FALSE | ||
| 3 | Ben | Oslo | FALSE | ||
| 4 | Ana | Rome | FALSE | ||
| 5 | Ben | Oslo | TRUE | ||
| 6 | Cara | Lima | FALSE | ||
| 7 | Ana | Lima | TRUE | ||
| 8 | Dan | Rome | FALSE |
轮到你了: 在 E2 中把每一对 Name 和 City 列出一次。
Ana 出现了三次,但她只有一行是重复的:在 Rome 的 Ana 和在 Lima 的 Ana 是不同的行。C5 和 C7 为 TRUE。答案会溢出两列宽,所以 E 列和 F 列必须为空。
按一列去重并保留其他列
如果只由一列决定(每位客户一行,不论城市),在对话框中只勾选那一列。Excel 会保留每个名字的第一行及其所有列。公式版本保留名字首次出现的每一行:MATCH(A2:A8,A2:A8,0) 给出每个名字第一次出现的位置,只有在首次出现时它才等于该行自身的位置。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Name | City | Name | City | |
| 2 | Ana | Lima | Ana | Lima | |
| 3 | Ben | Oslo | Ben | Oslo | |
| 4 | Ana | Rome | Cara | Lima | |
| 5 | Ben | Oslo | Dan | Rome | |
| 6 | Cara | Lima | |||
| 7 | Ana | Lima | |||
| 8 | Dan | Rome |
结果是在 Lima 的 Ana、在 Oslo 的 Ben、在 Lima 的 Cara 和在 Rome 的 Dan。Ana 后面的城市(Rome、Lima)被去掉了,和按钮的做法一样。
排序后的列表,以及只出现一次的值
把 UNIQUE 放进 SORT,就能按字母顺序得到干净的列表。UNIQUE 的第三个参数 exactly_once 作用不同:设为 TRUE 时,它只返回从不重复的值,所以每个有重复的值都会完全消失,包括第一份。删除重复值没有这样的选项。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Customer | Sorted | Only once | ||
| 2 | Eve | Ana | Cara | ||
| 3 | Ben | Ben | Dan | ||
| 4 | Cara | Cara | |||
| 5 | Ana | Dan | |||
| 6 | Dan | Eve | |||
| 7 | Ben | ||||
| 8 | Ana | ||||
| 9 | Eve |
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)) 统计不同客户的个数。要单独统计不同值的个数,请看统计唯一值。
| A | B | C | |
|---|---|---|---|
| 1 | Customer | Repeats | |
| 2 | Ana | ||
| 3 | Ben | ||
| 4 | Cara | ||
| 5 | Ana | ||
| 6 | Dan | ||
| 7 | Ben | ||
| 8 | Ana | ||
| 9 | Eve |
轮到你了: 在 C2 中统计 A2:A9 中有多少行与上方某一行重复。
答案是 3。如果你已经有上一节中的标记列,=COUNTIF(B2:B9,TRUE) 也能统计出同样的重复项。
在 Excel 2019 及更早版本中删除重复值
UNIQUE、SORT 和 FILTER 需要 Excel 2021 或 Microsoft 365。在 Excel 2019 及更早版本中,有两种保留原始数据的方法:
- 高级筛选。 选中这一列,选择 数据 > 排序和筛选 > 高级,选择 将筛选结果复制到其他位置,在 复制到 中选一个目标单元格,勾选 选择不重复的记录,然后按“确定”。得到的副本是固定的列表;数据改变后需要重新筛选。
- 向下填充的公式。 把下面的公式放在 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 仍是两个条目。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Customer | UNIQUE | UNIQUE of TRIM | ||
| 2 | Ana | Ana | Ana | ||
| 3 | Ana | Ana | Ben | ||
| 4 | Ben | Ben | Cara | ||
| 5 | Ben | Ben | |||
| 6 | Cara | Cara |
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))。