跳至主要内容

如何在Excel中删除重复项但保留空白行?

Author: Sun Last Modified: 2025-07-31

在 Excel 中,删除重复项功能提供了一种方便的方法,可以从列表中消除重复值。然而,当您的列表包含空白行时,会出现一个常见的挑战;标准功能也会删除这些空白行,可能会通过关闭间隙破坏数据的原始结构。如果空白行充当逻辑分隔符或用于格式化目的,这通常是有问题的。

如果您的目标是删除重复条目,但 完全保留所有空白行,有几种有效的方法。这些方法可以帮助您清理列表,而不会影响空白行,从而提供更专业的数据管理并保持工作表的视觉结构。下面列出了在 Excel 中不同场景下实现此目标的几种解决方案。
A screenshot showing data in Excel with duplicates and blank rows

使用公式和删除重复项功能删除重复项并保留空白行

使用“选择重复项和唯一单元格”选择并高亮显示重复项good idea3

VBA 宏:自动删除重复项但保留空白行

Excel 公式/高级筛选:提取唯一值同时保留空白行


使用公式和删除重复项功能删除重复项并保留空白行

要删除重复项并保留空白行,首先需要使用辅助列来标识和标记哪些行是空白的,然后利用 Excel 内置的删除重复项工具。这种组合方法确保唯一值保留下来,并且所有现有的空白行保持不变。如果您希望有一个集成的、主要手动操作的 Excel 工作流,并且带有可见的辅助列,这种方法效果很好。

第一步:在相邻的一列(例如,如果您的数据从 A1 开始,则从 B1 开始),输入以下公式以标记空白行:

=IF(LEN(TRIM(A1))=0,ROW(),"")

该公式检查单元格 A1 是否为空白或仅包含空格。如果是这样,它将显示行号;否则,它将使单元格保持为空。将公式向下拖动到列表中的所有条目旁边,以标记每个空白行。
A screenshot of the formula used to identify blank rows in Excel

注意:如果您的数据跨越多列,请调整引用(例如,根据需要使用 A1B1)。使用 TRIM 可确保只包含空格的单元格也被视为空白。

第二步: 选择您的原始数据列和新的辅助列。然后转到 数据 > 删除重复项。在弹出的对话框中,仅勾选原始列的复选框(而不是辅助列),以便根据目标数据识别重复项。
A screenshot showing the Remove Duplicates button on the Data tab in Excel
A screenshot showing the Remove Duplicates dialog

提示:确保您的数据选择包含辅助列,但使用原始数据列作为删除重复项的关键列。这可以防止意外删除由辅助列标记的空白行。

第三步: 将出现一个通知,显示删除了多少个重复值。点击 确定 确认并关闭消息。
A screenshot of the Remove Duplicates notification dialog in Excel

此时,列表将显示所有唯一值以及所有先前存在的空白行。如果不再需要辅助列,您可以将其删除。
A screenshot of the Excel sheet after removing duplicates but keeping blank rows

适用场景:当您只想使用标准 Excel 功能并且数据简单时推荐使用此方法。如果数据经常更新,这不是全自动的,因为它需要重复步骤。此外,在删除重复项之前确保备份您的数据,因为保存和关闭文件后此过程无法撤销。

故障排除:如果空白行仍然被删除,请仔细检查您的辅助公式是否正确标记了所有空白行,并且在对话框中仅使用主列作为“删除重复项”键。


使用“选择重复项和唯一单元格”选择并高亮显示重复项

Kutools for Excel 的“选择重复项和唯一单元格”工具在视觉上识别重复条目前非常有用,而空白行则默认保留。如果您希望在删除前手动检查重复项,或者只是想突出显示它们以进行进一步操作,这个解决方案非常出色。

Kutools for Excel 提供了超过 300 种高级功能,简化复杂任务,提升创造力与效率。 通过集成 AI 能力,Kutools 能够精准自动执行任务,让数据管理变得轻松简单。Kutools for Excel 的详细信息...         免费试用...

1. 选择包含数据的范围(包括空白行),然后单击 Kutools > 选择 > 选择重复项和唯一单元格.
A screenshot of the Kutools Select Duplicate & Unique Cells menu in Excel

2.选择重复项和唯一单元格 对话框中,选择 重复项(除第一个外) 在“规则”下。您还可以勾选 填充背景颜色填充字体颜色 框,以使用您选择的颜色自动突出显示重复项。
A screenshot of the Select Duplicate & Unique Cells dialog

提示:如果您想选择整个重复行,请选择完整数据范围,而不仅仅是某一列,并相应地应用该工具。

3. 单击 确定。将报告找到并选择了多少个重复单元格或行的对话框。单击 确定 关闭。
A screenshot of the notification dialog in Kutools for Excel after selecting duplicate rows

现在,列表中的重复项已被高亮显示,使其易于发现并根据需要手动删除,而不会影响任何空白行。
A screenshot of highlighted duplicate cells in Excel using Kutools

优点:更加灵活、无风险,并支持在删除前进行审查。默认情况下,空白行不受影响。如果您希望获得更多的视觉控制或需要逐案处理重复项,这种方法也非常有用。

注意:如果需要批量删除重复项,您可以对高亮显示的行进行排序或筛选,并保留原始工作表的视觉结构。

Kutools for Excel - 通过超过300个必备工具,让Excel功能大幅提升。永久免费享受AI功能!立即获取

演示:使用 Kutools for Excel 选择重复项和唯一单元格

 
Kutools for Excel:超过 300 种实用工具触手可及!永久免费享受 AI 功能!立即下载!

VBA 宏:自动删除重复项但保留空白行

对于经常需要在保留所有空白行的同时自动删除重复项的用户来说,使用 VBA 宏是一个实用的选择。有了宏,无论列表变化多么频繁,您都可以一键清理数据,而无需依赖辅助列。如果您的工作表结构一致,并且想要一个可重复的解决方案以确保性能和准确性,这种方法是理想的。

注意:运行任何宏之前,请始终保存工作表的副本,因为在执行后操作不易撤销。

1. 转到开发工具 > Visual Basic。在 VBA 编辑器中,单击插入 > 模块。然后将以下代码粘贴到新模块窗口中:

Sub RemoveDuplicatesKeepBlankRows()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim dict As Object
    Dim cell As Range
    Dim checkRange As Range
    Dim i As Long
    
    Set ws = ActiveSheet
    Set dict = CreateObject("Scripting.Dictionary")
    
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    Set checkRange = ws.Range("A1:A" & lastRow)
    
    Application.ScreenUpdating = False
    
    For i = lastRow To 1 Step -1
        Set cell = ws.Cells(i, 1)
        
        If Trim(cell.Value) = "" Then
            ' Blank row, do nothing and keep row
        Else
            If dict.Exists(cell.Value) Then
                cell.EntireRow.Delete
            Else
                dict.Add cell.Value, True
            End If
        End If
    Next i
    
    Application.ScreenUpdating = True
End Sub

2. 要运行代码,请单击 Run button 按钮,或按 F5 选定模块时按下 F5 键。该宏将立即扫描第一列(A 列),删除重复值,同时保留所有先前空白行的原始位置。

它是如何工作的:该宏从指定列的底部循环到顶部,删除之前的值,同时保留所有空白行。它通过识别最后一个非空单元格自动适应不同长度的列表。

参数和提示:

  • 如果您的数据在另一列中,请将 Cells(i,1) 更改为相关的列号(例如,2 表示 B 列,3 表示 C 列)。
  • 该宏从最后一行开始向上运行,防止行移动干扰删除过程。
  • 任何仅包含空格的单元格也将被视为空白。如果您只想识别真正空的单元格,请将 Trim(cell.Value) = "" 替换为 cell.Value = ""

故障排除:如果宏没有按预期行为,请检查目标列中的合并单元格、隐藏行或意外的数据类型。

最适合:重复清理操作、处理较大的数据集,或在自动化工作流中使用宏。


Excel 公式/高级筛选:提取唯一值同时保留空白行

如果您想从原始数据中提取唯一列表并在空白行出现的地方保留它们的位置,您可以使用具有条件公式的高级筛选器,或者巧妙地使用 Excel 公式构建新列表。如果您想创建一个单独的、去重的列表用于报告或进一步分析,同时尊重原始布局(包括空白行),这尤其有用。

您可以使用以下公式构建唯一值列表,同时在其位置保留空白行。这是一个简化的做法:

1. 在新的一列(例如 B1)中,使用此公式(假设您的原始数据在 A1:A100 中):

=IF(TRIM(A1)="","",IF(COUNTIF(A$1:A1,A1)=1,A1,""))

2. 将此公式拖动到数据的所有行。唯一条目将在其原始位置出现;后续重复项将显示为空白,原始空白行将保持空白。

注意事项:确保没有可能影响唯一性的隐藏值或前导/尾随空格。TRIM 有助于防范这种情况。对于旧版本的 Excel,方法可能需要调整,或者使用带手动筛选的辅助列。

适用于:创建新报告、并排列表或准备清理数据以进行进一步处理。如果您希望采用仅使用公式而不使用 VBA 或插件的方法,这种方法也是理想的。


最佳 Office 办公效率工具

🤖 Kutools AI 助手:基于智能执行,彻底革新数据分析 生成代码创建自定义公式分析数据并生成图表调用 Kutools Functions
热门功能:查找、选中项的背景色或标记重复项|删除空行|合并列或单元格且不丢失数据|四舍五入(无公式)...
高级 LOOKUP多条件查找 (VLookup)多值查找 (VLookup)多表查找 (VLookup Across Multiple Sheets)模糊查找 (Fuzzy Lookup)...
高级下拉列表快速创建下拉列表依赖型下拉列表多选下拉列表...
列管理器添加指定数量的列移动列切换隐藏列的可见状态比较区域及列...
特色功能网格聚焦设计视图增强编辑栏工作簿 & 工作表管理器资源库(自动文本)|日期提取合并数据加密/解密单元格按列表发送电子邮件超级筛选特殊筛选(筛选粗体/倾斜/删除线等)...
热门15 大工具集12 款文本工具添加文本删除特定字符等)50+ 种图表 类型甘特图等)40+ 实用公式基于生日计算年龄等)19 款插入工具插入二维码按路径插入图片等)12 种转换工具小写金额转大写汇率转换等)7 款合并与分割工具高级合并行分割单元格等)...更多精彩等你发现
使用 Kutools,支持您的首选语言——包括英语、西班牙语、德语、法语、中文及40 多种其他语言!

用 Kutools for Excel 加速你的 Excel 技能,体验前所未有的高效办公。 Kutools for Excel 提供300 多项高级功能,助您提升效率,节省大量时间。点击此处,获取你最需要的功能...


Office Tab 为 Office 带来标签式界面,让你的工作更加轻松

  • 在 Word、Excel、PowerPoint 启用标签式编辑和阅读
  • 在同一窗口的新标签中打开和创建多个文档,无需新建窗口。
  • 办公效率提升50%,每天帮你减少上百次鼠标点击!