在日常处理 Excel 数据时,重复行是高频出现的问题,不仅会增加数据量,还可能导致统计分析出错。本文将详细介绍两种高效的去重方案:Free Spire.XLS for Python(适合自动化/批量处理)和 VBA 脚本(适合 Excel 内直接操作),帮助你根据场景选择最优方式。
核心需求适配
你在处理 Excel 重复行时,可能面临这些场景:
- 需批量处理数十个 Excel 文件,希望自动化脚本一键去重;
- 仅处理单个 Excel 文件,不想安装 Python,直接在 Excel 内操作;
- 需保留 Excel 原生格式(样式、公式),同时精准控制去重规则;
- 既想掌握轻量化的 VBA 快速操作,也想学会 Python 的批量处理能力。
前置认知:两种方法核心对比
| 特性 | Python (Free Spire.XLS) | Excel VBA |
|---|---|---|
| 操作环境 | 需安装 Python + Spire.XLS 库 | 无需额外安装,Excel 原生支持 |
| 适用场景 | 批量处理多文件、跨平台 | 单个文件快速处理、轻量化操作、办公场景 |
| 格式兼容性 | 保留 Excel 原生格式、公式、样式 | 完全原生操作,格式无损耗 |
| 学习成本 | 入门级 Python 语法,代码可复用 | 简单 VBA 语法,仅需掌握核心判重逻辑 |
| 自动化能力 | 可集成到批量脚本、定时任务 | 仅在 Excel 内运行,适合单次操作 |
方法 1:通过 Python 删除重复行
Free Spire.XLS for Python 是一款无需安装 Microsoft Excel 即可操作 Excel 文件的免费 Python 库,适合批量处理多个 Excel 文件、自动化脚本开发场景。
1. 环境准备 首先安装 Free Spire.XLS for Python,执行以下命令:
pip install Spire.Xls.Free
2. 完整实现代码
from spire.xls import *
# 创建 Workbook 实例
workbook = Workbook()
workbook.LoadFromFile("duplicates.xlsx")
sheet = workbook.Worksheets[0]
# 配置关键参数
key_column = 1 # A 列(Spire.XLS 中列号从 1 开始)
last_row = sheet.LastRow
# 定义要处理的范围
data_range = sheet.Range[f"A1:A{last_row}"]
# 用于跟踪已出现的值(去重核心)
seen_values = set()
rows_to_remove = []
# 获取总行数
row_count = data_range.Rows.Length
# 核心逻辑:从最后一行向前遍历
i (row_count, , -):
cell = data_range[i, key_column]
cell_value = (cell.DisplayedText).strip()
cell_value cell_value seen_values:
rows_to_remove.append(i)
:
seen_values.add(cell_value)
row rows_to_remove:
sheet.DeleteRow(row)
workbook.SaveToFile(, ExcelVersion.Version2016)
workbook.Dispose()


