如何在Excel中检查重复项:每种方法详解(2026)
您正在查看一个包含数百行员工记录、客户姓名或销售条目的电子表格,但感觉有些不对劲。 那里有重复值,您需要在它们影响分析之前找到它们。 Excel为您提供了几种强大的方法来检查重复项,合适的方法取决于您是要突出显示它们、计数它们、筛选它们,还是完全删除它们。
最快的路径是使用条件格式。 选择您的单元格范围,转到首页 > 条件格式 > 突出显示单元格规则 > 重复值,选择格式样式,然后点击确定。 Excel会立即突出显示您所选范围内的每个重复值,而不更改您的原始数据。
本文涵盖了在Excel中处理重复数据的每个可靠方法,回答了如何高效检查重复条目的常见问题:使用条件格式突出显示重复项,使用COUNTIF公式计数重复项,通过高级筛选提取唯一值以及重复和唯一条目并排,使用内置的删除重复项功能删除重复行,查找跨多个列的重复项,并使用Power Query处理大型数据集。 故障排除部分涵盖边缘情况。 需要以编程方式检测和管理重复值的开发人员也将在文章结尾找到一节,展示了IronXL如何在C#中处理这一问题。
在深入了解方法之前,值得提前知道的一点:这些方法中的方法并不都以相同的方式工作。 条件格式和COUNTIF保持您的原始数据不变。 删除重复项功能永久删除重复行。 在使用任何破坏性方法之前,请始终创建您的数据备份。
方法 1:使用条件格式高亮重复项(最快)
条件格式是视觉识别Excel工作表中重复单元格的最快方法,而不改变原始数据。 它将格式样式应用于您选择的单元格范围中每个出现多次的值。
-
选择您要检查的单元格范围。 例如,选择B2:B151以检查员工数据文件中的员工ID列。
-
转到Excel功能区中的首页选项卡。
-
在格式组中点击条件格式。
-
从下拉菜单中悬停在突出显示单元格规则。
-
从子菜单中选择重复值。
- 在对话框中,从右侧的下拉菜单中选择您喜欢的格式样式,例如浅红色填充或黄色填充。
- 点击确定。
Excel会立即突出显示您所选范围内的每个包含重复值的单元格。 唯一值保持未格式化。 下图中,B列中的重复名称高亮显示为红色,使它们在不滚动浏览数据的情况下立即可见于所有150行中。

添加图片 alt 文本
当此方法效果最好时:此方法适合于单列的快速视觉检查,例如扫描重复姓名或D列中的重复电子邮件或重复的员工ID。 使用条件格式可以让您在不改变原始数据的情况下可视化标识重复值,使其成为在决定下一步处理方法之前快速查找重复项的办法。 为了生成内置有重复检测的Excel报告,IronXL允许您在C#中以编程方式应用这些检查。
重要:该方法仅基于完全匹配高亮显示重复值。 它不区分大小写,因此"JAMES"和"james"会被视为重复项。 空单元格不被标记为重复项。
方法 2:使用COUNTIF计数重复项
COUNTIF函数为您提供了每个值在范围中出现的精确次数。 当您不仅需要知道是否存在重复项,还需要确切知道每个条目有多少重复项以及受到影响的具体行时,这很有用。
- 单击您的数据旁边的一个空白单元格,例如单元格Z2,以创建辅助列。
- 输入以下公式:=COUNTIF($B$2:$B$151,B2)
- 按Enter。
- 通过数据行的其余部分从Z2到Z151复制公式。
COUNTIF公式返回A2中的值在从A2到A151指定范围中出现的次数。结果为1意味着该值是唯一的。 任何大于1的结果意味着该值多次出现并且是重复的。 countif函数在逻辑上下文中返回布尔值:当公式返回true时,它表示重复值,当条目是唯一时返回false,使得选择数据进行过滤变得很简单。 当范围包含空字符串或空白时,这些空单元格每个都被视为相同的值,如果存在多个空白,将返回大于1的行数。像在条件参数中的A2这样的单元格引用始终保持相对,因此它会在公式向下复制时正确移动。
在下图中,Z列中的辅助列显示了唯一员工ID的计数为1,而对于同一ID出现多次的行,计数为2或更高,使得很容易确定哪些行是重复的以及存在多少重复项。

添加图片 alt 文本
跨两个列计数重复项:要基于多个条件检查重复项,请改用COUNTIFS函数。 例如,=COUNTIFS($B$2:$B$151,B2,$C$2:$C$151,C2)返回同时匹配名字和姓氏的行数,帮助您即使在数据跨两个列时找到重复的姓名。
专业提示:若只从首次出现开始计数重复项,请使用=COUNTIF($A$2:A2,A2)。 此公式复制下移时会扩展,因此任何值的首次出现始终返回1,只有重复出现会返回2或更高。 这让您只识别和删除重复行,同时保留每个值的首次出现。
方法 3:筛选查找重复行
一旦您使用COUNTIF在辅助列中标记了重复行,就可以使用Excel的筛选功能快速隔离和找到整个电子表格中的重复行。
- 先完成方法2,在Z列添加COUNTIF辅助列。
- 点击数据范围中的任一单元格,例如B2。
-
转到数据选项卡并在排序和筛选组中点击筛选。
- 点击Z列中辅助列标题上的下拉箭头。
- 取消选中1并保留其他所有值已勾选,然后点击确定。
Excel现在仅显示计数大于1的行,即您的重复行。 您可以根据需要查看、编辑或删除它们。 要在整个表中找到重复行,请在应用之前检查筛选条件中的所有列。

添加图片 alt 文本
使用高级筛选获取唯一记录:另一个方法是使用数据选项卡下的高级筛选选项。 转到数据 > 高级,勾选"仅限唯一记录",然后选择是在原位筛选还是将结果复制到新位置。 这可以直接从数据集中提取唯一记录,比通过手动筛选出重复项更快,当您只需要查看独特条目时。
方法 4:使用内置功能删除重复项
Excel中的删除重复项功能是从数据中消除重复行的最直接方法。 它永久删除重复行,只保留每个重复集的首次出现。
在使用删除重复项功能之前,请创建数据的备份。 此操作会永久删除重复行,保存文件后无法撤销。
- 在数据范围内选择任一单元格,例如B2。
-
在Excel功能区中转到数据选项卡。
-
在数据工具组中点击删除重复项。
- 在删除重复项对话框中,选择要检查的列。 要基于整个行删除重复行,请检查所有列。 要基于特定列(如员工ID)删除重复项,请仅检查该列。
- 点击确定。
Excel 根据您选定的列删除所有重复行,仅保留每个值首次出现的行。 一个对话框确认最终结果:找到了并删除了多少个重复值,剩下多少个唯一值。
在下面的截图中,"删除重复项"对话框显示了员工数据文件中列出的所有25列,并提供选项以选中或取消选中每一列。 点击确定后,Excel 会报告已删除的重复行数和剩余的唯一记录行数。

添加图片 alt 文本
选择要检查的列:如果您选择所有列,Excel 仅删除在每个字段上完全相同的行,这通常不是您想要的结果。 在大多数情况下,您将只检查关键标识符列,例如列A中的员工ID,您的数据范围的左上角单元格,以根据该单列删除重复行,同时保持其余数据不变。 要仅从特定列中删除重复值,请在"删除重复项"对话框中选中该列,并取消选中所有其他列。 这让您能够针对任何目标字段以Excel风格删除重复项,而不扰乱其他行。
注意:"删除重复项"功能不会在删除之前预览这些行。 如果您希望在删除之前查看重复行,请先使用方法2和方法3以识别它们,然后手动删除。
方法5:使用 COUNTIFS 在多个列中查找重复项
当您需要基于字段组合而不是单列来识别重复时,COUNTIFS函数可以一次处理多个条件。 这在当像"名"这样的单列有许多非真正重复时很有用,但"名"和"姓"的组合定义了一个唯一记录。
- 添加一个辅助列,例如在列Z的单元格Z2中。
- 输入公式:=COUNTIFS($B$2:$B$151,B2,$C$2:$C$151,C2)
- 将公式复制下来到Z151。
此公式返回在列B中的"名"和列C中的"姓"与当前行值匹配的行计数。 结果大于1的组合被识别为重复条目。
为了在整个表格中进行更具体的重复检测,您可以扩展COUNTIFS公式以包括额外的列,例如列E中的部门和列K中的入职日期,这在您想找到共享相同日期的重复条目时很有用。 像COUNTIFS这样的Excel公式是最灵活的工具之一,因为该函数返回您定义的任何标准组合的计数。

添加图片 alt 文本
方法6:使用 Power Query 在大型数据集中删除重复项
建议使用Power Query 删除超过10,000行的大型数据集中的重复项。 它是Excel中的一种高级工具,可以比内置的"删除重复项"功能更有效地处理复杂的重复场景,并在保留原始数据的同时,在单独的查询中而不是直接修改源中存储您的数据。
- 点击数据范围中的任意单元格,例如B2。
-
转到数据选项卡,并在"获取与转换数据"组中单击"来自表/范围"。如果提示,请确认您的数据具有标题。
- 打开Power Query编辑器。 选择要检查重复项的列,例如员工ID列。
- 右键点击列标题并选择删除重复项。
- 在Power Query编辑器的"主页"选项卡中单击关闭并加载以将去重结果加载到新表中。
Power Query编辑器将您的数据加载到一个单独的查询中,并根据所选列删除重复行,仅保留首次出现的行。 结果被加载到新表上的新位置,因此您的原始数据保持不变。

添加图片 alt 文本
Excel 365 和 UNIQUE 函数: Excel 365用户也可以使用UNIQUE函数直接从数据集中提取唯一值。 公式=UNIQUE(A2:A151)在单个步骤中从员工ID列返回唯一值列表,而无需打开Power Query编辑器。 这是一种将重复项和唯一记录并排管理的复杂方法。
常见问题及故障排除
条件格式化标记不看似重复的单元格
条件格式化不区分大小写,并在比较之前修剪前导或尾随空格。 如果两个单元格看起来不同但被标记,请使用TRIM函数或查找和替换检查隐藏字符。
删除重复项说"未找到重复项",但我可以看到相同的值
比较是跨所有选定列精确进行的。 如果您检查了所有列,行必须在每个字段上完全相同才能被标记。 尝试仅检查关键列以缩小标准。
COUNTIF 为所有内容返回1,即使我可以看到重复项
范围参数可能未正确锁定。 确保使用类似 $A$2:$A$151 的绝对引用,而条件使用类似 A2 的相对引用。如果不使用锁定引用,公式向下复制时会缩小并遗漏行。
Power Query 在我的Excel版本中不可用
Power Query 可在 Windows 上的 Excel 2016及更高版本中使用,在 Mac 上的 Excel 2019及更高版本中使用。 在Windows上的Excel 2010和2013中,它可作为免费Microsoft加载项使用。
条件格式化将空单元格标记为重复项
如果您的范围包含多个空单元格,Excel 默认将它们视为相同的值。 改用自定义规则和COUNTIF公式: =COUNTIF($A$2:$A$151,A2)>1,仅应用于您选择范围内的非空单元格。
选择正确的方法:快速参考
| 目标 | 要做什么 | |---|---| |可视化高亮重复值而不更改数据|主页 > 条件格式 > 高亮单元格规则 > 重复值| |计算每个值出现的次数|使用=COUNTIF($A$2:$A$151,A2)在辅助列中| |过滤以仅显示重复行|添加COUNTIF辅助列,然后在该列上选择数据 > 筛选| |永久删除重复行|数据选项卡 > 删除重复项(先备份您的数据)| |查找多个列中的重复项|使用=COUNTIFS()为每个相关列设置条件| |处理超过10,000行的大型数据集|数据选项卡 > 来自表/范围 > Power Query 编辑器 > 删除重复项| |拆取Excel 365中的唯一值|在工作表上直接使用=UNIQUE(range)|
面向开发者:使用 IronXL 检测和处理重复值
如果您的应用程序自动处理Excel文件,它将通常需要在数据管道中检查并删除重复数据。IronXL为您提供了一个简洁的API来读取单元格值、以编程方式比较它们,并在不安装Microsoft Office的服务器上删除C#中的重复行。
以下是在C#中根据员工ID列查找和删除重复行的方法:
using IronXL;
using System.Collections.Generic;
using System.Linq;
WorkBook workBook = WorkBook.Load("employee_data.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;
var seen = new HashSet<string>();
var rowsToDelete = new List<int>();
// Start from row 2 to skip the header row
for (int i = 2; i <= 151; i++)
{
string cellValue = sheet[$"A{i}"].StringValue;
if (!seen.Add(cellValue))
{
// Value already seen, this is a duplicate row
rowsToDelete.Add(i);
}
}
// Delete duplicate rows in reverse order to preserve row numbers
foreach (int rowIndex in rowsToDelete.OrderByDescending(r => r))
{
sheet.RemoveRow(rowIndex);
}
workBook.SaveAs("employee_data_deduplicated.xlsx");
using IronXL;
using System.Collections.Generic;
using System.Linq;
WorkBook workBook = WorkBook.Load("employee_data.xlsx");
WorkSheet sheet = workBook.DefaultWorkSheet;
var seen = new HashSet<string>();
var rowsToDelete = new List<int>();
// Start from row 2 to skip the header row
for (int i = 2; i <= 151; i++)
{
string cellValue = sheet[$"A{i}"].StringValue;
if (!seen.Add(cellValue))
{
// Value already seen, this is a duplicate row
rowsToDelete.Add(i);
}
}
// Delete duplicate rows in reverse order to preserve row numbers
foreach (int rowIndex in rowsToDelete.OrderByDescending(r => r))
{
sheet.RemoveRow(rowIndex);
}
workBook.SaveAs("employee_data_deduplicated.xlsx");
Imports IronXL
Imports System.Collections.Generic
Imports System.Linq
Dim workBook As WorkBook = WorkBook.Load("employee_data.xlsx")
Dim sheet As WorkSheet = workBook.DefaultWorkSheet
Dim seen As New HashSet(Of String)()
Dim rowsToDelete As New List(Of Integer)()
' Start from row 2 to skip the header row
For i As Integer = 2 To 151
Dim cellValue As String = sheet($"A{i}").StringValue
If Not seen.Add(cellValue) Then
' Value already seen, this is a duplicate row
rowsToDelete.Add(i)
End If
Next
' Delete duplicate rows in reverse order to preserve row numbers
For Each rowIndex As Integer In rowsToDelete.OrderByDescending(Function(r) r)
sheet.RemoveRow(rowIndex)
Next
workBook.SaveAs("employee_data_deduplicated.xlsx")
代码读取员工ID列(列A)中的每个值,使用一个哈希集合跟踪已经看到的值,并将值已出现之前的任何行标记为重复。 行是以相反顺序删除的,因此删除一行不会更改剩余行的索引。
为了用背景色高亮重复值而不是删除它们,IronXL的条件格式化API让您可以以编程方式将格式化规则应用于任何单元格范围,以匹配Excel内置的高亮单元格规则功能的视觉输出。
IronXL还可以处理读取和写入Excel数据、单元格格式和样式,以及处理不需要在服务器上安装Microsoft Office的大型工作簿。
入门: 使用 Install-Package IronXL.Excel 通过NuGet安装IronXL并开始您的免费试用。 IronXL在.NET 6+上运行,并与Windows、Linux、macOS、Docker、Azure和AWS兼容。
总结
在Excel中检查重复项是您需要定期执行的操作,无论是清理客户列表、验证员工记录,还是准备数据分析。 对于快速视觉检查,条件格式化是最快的答案:它在不接触原始数据的情况下标记您选择范围内的每个重复值。 对于在.NET中自动执行的开发者,IronXL提供了以编程方式检测和删除重复项的工具,而无需在服务器上安装Microsoft Office。
为了精准找到重复值,COUNTIF和COUNTIFS允许您计算出现次数、识别特定行并围绕它们构建过滤器。 当准备永久删除重复行时,"数据"选项卡中的"删除重复项"功能可在几次点击内完成,而Power Query 是一个更适合大数据集的工具,它在性能和无损处理方面更胜一筹。 无论您选择哪种方法,在删除任何内容之前备份您的原始数据。




