跳至主要内容

Kutools for Office — 一套工具,五种功能。事半功倍。

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

Author Sun Last modified

在 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函数……
热门功能:查找、选中项的背景色或标记重复项 | 删除空行 | 合并列或单元格且不丢失数据 | 四舍五入……
高级LOOKUP多条件VLookup|多值VLookup|多表查找|模糊查找……
高级下拉列表快速创建下拉列表 |依赖下拉列表 | 多选下拉列表……
列管理器添加指定数量的列 | 移动列 | 切换隐藏列的可见状态 | 比较区域与列……
特色功能网格聚焦 |设计视图 | 增强编辑栏 | 工作簿及工作表管理器 | 资源库(自动文本) | 日期提取 | 合并数据 | 加密/解密单元格 | 按名单发送电子邮件 | 超级筛选 | 特殊筛选(筛选粗体/倾斜/删除线等)……
15大工具集12项 文本工具添加文本删除特定字符等)|50+种 图表 类型甘特图等)|40+实用 公式基于生日计算年龄等)|19项 插入工具插入二维码从路径插入图片等)|12项 转换工具小写金额转大写汇率转换等)|7项 合并与分割工具高级合并行分割单元格等)| ……
Kutools支持多种语言——可选择英语、西班牙语、德语、法语、中文等40多种语言!

通过Kutools for Excel提升您的Excel技能,体验前所未有的高效办公。 Kutools for Excel提供300多项高级功能,助您提升效率并节省时间。 点击此处获取您最需要的功能……


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

  • 支持在Word、Excel、PowerPoint中进行多标签编辑与阅读
  • 在同一个窗口的新标签页中打开和创建多个文档,而不是分多个窗口。
  • 可提升50%的工作效率,每天为您减少数百次鼠标点击!

所有Kutools加载项,一键安装

Kutools for Office套件包含Excel、Word、Outlook和PowerPoint的插件,以及Office Tab Pro,非常适合跨Office应用团队使用。

Excel Word Outlook Tabs PowerPoint
  • 全能套装——Excel、Word、Outlook和PowerPoint插件+Office Tab Pro
  • 单一安装包、单一授权——数分钟即可完成设置(支持MSI)
  • 协同更高效——提升Office应用间的整体工作效率
  • 30天全功能试用——无需注册,无需信用卡
  • 超高性价比——比单独购买更实惠