Excel合并去重,除了数组公式还有这3种更简单的方法:数据透视表、Power Query和VBA宏
2026/6/10 11:49:55 网站建设 项目流程

Excel合并去重:4种高效方法全解析

当你面对两列需要合并并去除重复项的数据时,数组公式可能是你首先想到的解决方案。但那些复杂的公式真的适合每个人吗?实际上,Excel提供了多种更直观、更适合不同技能水平用户的方法。本文将带你探索四种主流方法,从基础到高级,总有一种适合你的需求。

1. 基础方法:巧用"删除重复项"功能

对于Excel新手来说,内置的"删除重复项"功能是最容易上手的工具。虽然它不能直接合并两列数据,但通过简单的预处理,我们可以轻松实现合并去重的目标。

操作步骤:

  1. 合并数据:在两列数据下方新建一列,使用简单的复制粘贴或=A2=B2这样的公式将两列数据合并到一列中
  2. 去重处理
    • 选中合并后的整列数据
    • 点击"数据"选项卡 → "删除重复项"
    • 在弹出的对话框中确认操作

注意:这种方法会直接修改原始数据,建议先备份或在新工作表中操作。

适用场景:

  • 数据量不大(万行以内)
  • 只需一次性处理,无需重复操作
  • 对公式不熟悉的初级用户

小技巧:如果经常需要这种操作,可以将处理好的数据保存为模板,下次直接替换数据源即可。

2. 中级方案:数据透视表的灵活应用

数据透视表不仅能做统计分析,还是合并去重的利器。相比直接删除重复项,它不会修改原始数据,而是生成一个新的汇总表。

详细操作指南:

1. 将两列数据合并到一个区域(如A1:B100) 2. 选中数据区域,点击"插入" → "数据透视表" 3. 在创建对话框中,选择新工作表作为位置 4. 在数据透视表字段列表中,将两列字段都拖到"行"区域 5. 右键点击数据透视表中的任意值 → "数据透视表选项" 6. 在"布局和格式"选项卡中勾选"合并且居中排列带标签的单元格"

优势对比:

特性删除重复项数据透视表
保留原始数据❌ 修改原数据✅ 生成新表
处理速度中等
可重复使用✅ 刷新即可更新
附加功能仅去重可同时统计计数

进阶技巧:

  • 添加"计数"字段可以同时查看每个唯一值的出现次数
  • 使用切片器可以交互式筛选结果
  • 结合表格功能可实现动态范围引用

3. 高效工具:Power Query可视化处理

对于需要定期处理相似任务的用户,Power Query(Excel 2016后内置的"获取和转换"功能)是最佳选择。它提供了可视化的数据清洗界面,操作可记录、可重复。

完整工作流程:

  1. 导入数据

    • 点击"数据" → "获取数据" → "从其他源" → "从表格/范围"
    • 选择包含两列数据的区域,确认创建查询
  2. 合并与去重

    • 在Power Query编辑器中,选中第一列 → "转换" → "逆透视列"
    • 这时两列数据会合并为一列
    • 右键点击合并后的列 → "删除重复项"
  3. 加载结果

    • 点击"关闭并加载"将处理后的数据输出到新工作表
// 这是Power Query后台生成的M代码,供高级用户参考 let 源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content], 逆透视的列 = Table.UnpivotOtherColumns(源, {}, "属性", "值"), 删除的重复项 = Table.Distinct(逆透视的列, {"值"}) in 删除的重复项

为什么选择Power Query?

  • 可视化操作:无需编写复杂公式
  • 可重复使用:数据更新后只需刷新查询
  • 处理大数据:性能优于常规Excel函数
  • 步骤可调:随时修改处理流程中的任何环节

4. 自动化方案:VBA宏一键处理

对于需要频繁执行相同操作的高级用户,录制或编写VBA宏可以节省大量时间。下面提供一个安全、易用的宏代码示例。

基础宏代码:

Sub MergeAndRemoveDuplicates() Dim wsSource As Worksheet Dim wsDest As Worksheet Dim rngSource1 As Range, rngSource2 As Range Dim rngCombined As Range Dim lastRow As Long '设置工作表和数据范围 Set wsSource = ThisWorkbook.Sheets("原始数据") Set wsDest = ThisWorkbook.Sheets.Add(After:=wsSource) wsDest.Name = "处理结果" '确定数据范围(假设数据从A2和B2开始) lastRow = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row Set rngSource1 = wsSource.Range("A2:A" & lastRow) Set rngSource2 = wsSource.Range("B2:B" & lastRow) '合并数据到新工作表 rngSource1.Copy wsDest.Range("A1") lastRow = wsDest.Cells(wsDest.Rows.Count, "A").End(xlUp).Row rngSource2.Copy wsDest.Range("A" & lastRow + 1) '删除重复项 Set rngCombined = wsDest.Range("A1:A" & wsDest.Cells(wsDest.Rows.Count, "A").End(xlUp).Row) rngCombined.RemoveDuplicates Columns:=1, Header:=xlYes '优化结果 wsDest.Columns("A").AutoFit wsDest.Range("A1").Value = "合并去重结果" End Sub

如何使用这个宏:

  1. Alt+F11打开VBA编辑器
  2. 在"插入"菜单中选择"模块"
  3. 粘贴上述代码
  4. 返回Excel,按Alt+F8运行宏

安全提示:

  • 首次使用需启用宏(文件 → 选项 → 信任中心 → 信任中心设置 → 宏设置)
  • 建议先在不重要的文件上测试
  • 可添加错误处理代码增强健壮性

方法对比与选择指南

面对四种各具特色的方法,如何选择最适合你的方案?下面从多个维度进行比较:

性能与适用性对比表:

方法数据量上限学习曲线可重复性附加功能最佳适用场景
删除重复项10万行简单一次性简单任务
数据透视表100万行中等统计分析需要保留原始数据的任务
Power Query100万行+中高完整ETL流程定期处理的重复任务
VBA宏取决于内存极高完全自定义自动化批量处理

选择建议:

  • 如果你是Excel新手:从"删除重复项"开始,逐步尝试数据透视表
  • 需要定期报告:学习Power Query建立自动化流程
  • 处理超大数据集:考虑Power Query或专业数据库工具
  • 追求完全自动化:学习基础VBA或找IT部门开发定制工具

常见问题解答:

  1. 方法会改变我的原始数据吗?

    • 删除重复项:会修改数据
    • 其他方法:均保留原始数据
  2. 哪种方法处理速度最快?

    • 小数据量:删除重复项
    • 大数据量:Power Query
  3. 可以处理多列合并去重吗?

    • 所有方法都可以扩展,但公式会变得复杂
    • Power Query处理多列最为直观

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询