如何对比 Excel 两列数据的不同:从基础操作到 Python 自动化 📅 2026/7/2 2:35:36 档时快速得到对比结果。操作步骤数据准备打开 Excel同时选中需要对比的两列数据例如 C 列和 D 列。设置规则在开始选项卡中点击条件格式突出显示单元格规则。筛选唯一值在弹出的子菜单中选择重复值在随后的对话框左侧下拉框中切换为唯一。自定义样式选择一种显眼的填充色如黄底红字点击确定。此时两列中所有不匹配的项都会被高亮显示。适用场景临时性的、小规模的数据核对。局限性由于单元格的色彩是基于 UI 渲染的当数据量过大时滚动页面会出现明显的延迟且无法导出结构化的对比报告。函数公式法在 Excel 的生态体系中函数不仅是强大的计算工具也可以轻松实现多列数据对比。通过在辅助列中插入逻辑函数我们可以将复杂的逻辑抽象为直观易懂的文本标签。不仅方便后续的数据透视分析还能在数据更新时实现自动化同步适合用于构建动态表格。操作步骤建立辅助列在数据列旁如 G 列预留空间。编写比对逻辑精准匹配在 G2 输入IF(C2D2, 一致, 差异)。跨列搜索如果你想知道 C 列的值是否出现在 D 列的任何位置可使用IF(COUNTIF(D:D, C2)0, 存在, 缺失)批量复用双击单元格右下角的填充柄将公式应用至全表。适用场景需要进行数据清理、分类汇总的规范化报表。优缺点逻辑灵活且可追踪但复杂的嵌套公式在高并发计算时会消耗大量 CPU 资源导致文件打开缓慢或程序卡顿。VBA 宏脚本当基础功能和公式无法满足复杂的业务逻辑时很多高手会选择使用 VBA。作为 Excel 原生的脚本语言VBA 能够直接操作单元格对象将一系列操作封装成一个可以一键执行的宏。它解决了公式无法实现的跨表格自动上色、自动生成差异总结单等任务。在不具备外部编程环境的环境下VBA 是解决重复劳动非常有效的一种方案。操作步骤唤醒环境在 Excel 中按Alt F11打开 VBA 编辑器插入一个新模块。逻辑编写利用For循环结构遍历指定的行数通过If...Then判断两列单元格的值。执行效果 示例逻辑对比 A/B 列若不同则将 C 列标记为 Error For i 2 To ActiveSheet.UsedRange.Rows.Count If Cells(i, 1).Value Cells(i, 2).Value Then Cells(i, 3).Value Error Cells(i, 3).Interior.Color RGB(255, 0, 0) End If Next i适用场景固定的、周期性的个人本地办公自动化。局限性宏安全限制较多且完全依赖于 Excel设备需要安装微软办公套件。Python 自动化方案在企业级系统集成或超大数据处理场景中我们往往需要更专业、更纯粹的编程方案。利用 Python 结合Spire.XLS for Python开发者可以脱离 Microsoft Office 环境的情况下在服务器端或云端高效处理 Excel 任务。Spire.XLS 提供了高度封装的 API使得原本复杂的格式控制、样式渲染和逻辑对比变得简洁。这种方案不仅运行速度快更重要的是它能被融入到现代化的软件开发工作流中。核心步骤解析使用 pip 命令安装 Spire.XLS 组件pip install Spire.XLS第一步环境初始化与文档加载首先需要引入组件并加载目标 Excel 文件。Spire.XLS 的强大之处在于它能精准读取各种版本的 Excel 格式.xls/ .xlsx/ .xlsb。from spire.xls import * from spire.xls.common import * # 创建 Workbook 对象并加载文件 workbook Workbook() workbook.LoadFromFile(DataContrast.xlsx) sheet workbook.Worksheets[0]第二步执行对比逻辑与样式渲染在 Python 的循环结构中我们可以轻松调用组件提供的样式接口。不仅可以对比纯文本还能对不一致的单元格进行背景色填充、边框加粗或添加批注增强了结果的可读性。# 遍历有效行对比第一列和第二列 for i in range(1, sheet.LastRow 1): valA sheet.Range[i, 1].Text valB sheet.Range[i, 2].Text if valA ! valB: # 设置差异单元格背景色为红色 sheet.Range[i, 1].Style.Color Color.get_Red() # 为差异项添加批注说明 sheet.Range[i, 1].Comment.Text 检测到数据不一致第三步导出对比报告处理完成后我们可以将其保存为新的文件或者转换为 PDF 格式以便跨平台分享。workbook.SaveToFile(Comparison_Report.xlsx, ExcelVersion.Version2016) workbook.Dispose()完整 Python 代码示例from spire.xls import * from spire.xls.common import * # 创建 Workbook 并加载文档 workbook Workbook() workbook.LoadFromFile(/input/Population.xlsx) # 获取第三个工作表 sheet workbook.Worksheets[2] print(f正在比对中总行数: {sheet.LastRow}) # 核心比对逻辑 for i in range(1, sheet.LastRow 1): # 获取 C 列 (索引3) 和 D 列 (索引4) cellA sheet.Range[i, 3] cellB sheet.Range[i, 4] # 将数值统一转换为字符串格式进行严格比对 valA cellA.Value if cellA.Value is not None else valB cellB.Value if cellB.Value is not None else # 执行对比 if str(valA) ! str(valB): # 设置背景色为黄色 cellA.Style.Color Color.get_Yellow() # 设置字体加粗、红色 font cellA.Style.Font font.IsBold True font.Color Color.get_Red() # 在第七列 (G列) 写入标记 sheet.Range[i, 7].Text Mismatch print(f第 {i} 行发现差异: {valA} vs {valB}) # 保存并关闭文档 output_path /output/Result_Report.xlsx workbook.SaveToFile(output_path, ExcelVersion.Version2016) workbook.Dispose() print(f比对完成请查看生成文件: {output_path})PYTHON 复制 全屏