珠宝网站开发目的,制作网页用什么语言,刷粉网站推广,1+x数字营销网站两种实用方法删除 Excel 重复行#xff1a;Python VBA#xff08;2025-2026 实用版#xff09; 删除 Excel 中的重复行是非常常见的办公/数据清洗需求。下面介绍两种目前最实用、高效的方法#xff1a; Python#xff08;pandas openpyxl#xff09; —— 适合批量处…两种实用方法删除 Excel 重复行Python VBA2025-2026 实用版删除 Excel 中的重复行是非常常见的办公/数据清洗需求。下面介绍两种目前最实用、高效的方法Pythonpandas openpyxl—— 适合批量处理、自动化、跨文件、需要复杂去重逻辑的场景VBAExcel 自带宏—— 适合快速手动操作、不想安装额外环境、直接在 Excel 里完成的场景方法一Pythonpandas openpyxl —— 推荐用于自动化和批量处理优点可以处理超大文件几十万行支持多列组合去重、保留第一条/最后一条、按某列排序后去重可以把结果写回原文件或生成新文件完全可脚本化、定时任务代码示例保留第一条重复记录importpandasaspd# 方法1简单一行代码最常用defremove_duplicates_simple(file_path,sheet_nameSheet1,output_pathNone):# 读取 Exceldfpd.read_excel(file_path,sheet_namesheet_name,engineopenpyxl)# 删除重复行保留第一条出现的记录# keepfirst默认 / last / False全部删除cleaned_dfdf.drop_duplicates(keepfirst)# 如果想按某些列去重比如只看“姓名身份证”组合# cleaned_df df.drop_duplicates(subset[姓名, 身份证号], keepfirst)# 保存结果ifoutput_pathisNone:output_pathfile_path.replace(.xlsx,_cleaned.xlsx)cleaned_df.to_excel(output_path,indexFalse,engineopenpyxl)print(f去重完成原始{len(df)}行 → 去重后{len(cleaned_df)}行)print(f结果保存至{output_path})# 使用示例remove_duplicates_simple(原始数据.xlsx)更灵活版本保留最后一条 指定去重列 不保存索引importpandasaspddefremove_duplicates_advanced(input_file,output_fileNone,sheet_nameSheet1,subset_columnsNone,# 例如 [姓名, 电话]keeplast,# first / last / Falsesort_byNone# 先排序再去重例如 [日期]):dfpd.read_excel(input_file,sheet_namesheet_name,engineopenpyxl)original_rowslen(df)ifsort_by:dfdf.sort_values(bysort_by)cleaned_dfdf.drop_duplicates(subsetsubset_columns,keepkeep)ifoutput_fileisNone:output_fileinput_file.replace(.xlsx,_去重后.xlsx)cleaned_df.to_excel(output_file,indexFalse,engineopenpyxl)print(f去重完成)print(f原始行数{original_rows})print(f去重后行数{len(cleaned_df)})print(f保存路径{output_file})# 使用示例remove_duplicates_advanced(客户名单.xlsx,subset_columns[姓名,手机号,身份证号],# 只看这三列组合keeplast,# 保留最后出现的记录sort_by[登记日期]# 先按登记日期排序)方法二VBAExcel 宏 —— 适合快速手动清理优点无需安装任何软件直接在 Excel 里运行速度快几十万行也很快步骤按Alt F11打开 VBA 编辑器插入 → 模块粘贴下面代码Sub RemoveDuplicatesAdvanced() Dim ws As Worksheet Dim rng As Range Dim lastRow As Long Dim lastCol As Long 设置要处理的工作表可以改成 Sheets(Sheet1) Set ws ActiveSheet 找到最后一行和最后一列 lastRow ws.Cells(ws.Rows.Count, A).End(xlUp).Row lastCol ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column 设置要处理的区域从第1行表头开始 Set rng ws.Range(ws.Cells(1, 1), ws.Cells(lastRow, lastCol)) 方式一删除所有完全重复的行保留第一条 rng.RemoveDuplicates Columns:Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15), _ Header:xlYes 如果有表头就写 xlYes 方式二只按指定列去重例如只看第1列第3列第5列 rng.RemoveDuplicates Columns:Array(1, 3, 5), Header:xlYes MsgBox 去重完成 vbCrLf _ 当前剩余行数 ws.Cells(ws.Rows.Count, A).End(xlUp).Row, vbInformation End Sub常用修改方式需求修改方式只看 A、B、C 三列去重Columns:Array(1,2,3)保留最后一条记录先按某列排序Sort再去重包含表头Header:xlYes不包含表头Header:xlNo去重后自动筛选重复次数可加辅助列统计高级用法快捷键运行保存文件为.xlsm格式启用宏按Alt F8→ 选择RemoveDuplicatesAdvanced→ 运行两种方法对比总结维度Python (pandas)VBA (Excel 宏)环境依赖需要安装 pandas openpyxl无需安装Excel 自带处理数据量非常大百万行轻松几十万行也可以百万行稍慢灵活性极高多条件、排序、逻辑复杂中等主要靠列号自动化程度最高可定时、批量、命令行中等需手动触发学习成本中等需会一点 Python低复制粘贴就能用推荐场景经常处理、批量、需要可复用脚本临时快速清理、手动操作最终建议2026 视角日常小表、临时清理→直接用 VBA最快需要反复执行、批量处理、复杂去重逻辑、数据量大→强烈推荐 Python pandas企业内部自动化报表、ETL 流程→ 必选 Python如果你有具体需求例如只去重某些列、保留最新记录、处理多个 sheet、去重后还要统计重复次数等可以告诉我我可以给你更针对性的代码