VBA 数据清洗:从 ERP、CRM、网页后台导出的 Excel,一招删除空行、去重、格式统一

发布时间:2026/10/27 3:29:02

VBA 数据清洗:从 ERP、CRM、网页后台导出的 Excel,一招删除空行、去重、格式统一 VBA 数据清洗删除空行、去重、格式统一适用Excel 2016 / 2019 / 2021 / Microsoft 365 / WPSVBA 通用核心删空行 去重 去空格/文本转数值 一键把从系统导出的脏表整理成干净表痛点从系统导出的数据真的是惨不忍睹做报表的都懂从 ERP、CRM、网页后台导出的 Excel永远带着一堆惊喜——中间夹杂几十行完全空白的行同一笔数据因为反复导出了重复行数字前面有看不见的空格导致 VLOOKUP 对不上明明是数字存成了文本求和全是 0日期格式五花八门2026.8.12026/8/108-01混在一起。手动一条条删、一个个改5000 行能改到眼瞎。其实用 VBA 写一个小清洗宏点一下10 秒把脏表变干净。这一步也是前面几篇发邮件、生成合同的前置——数据源不干净后面全白搭。效果预览清洗前节选清洗后空行没了、重复行第 2 个张三删了、工资列的空格和文本格式都统一成纯数字。可以直接拿去做 VLOOKUP 和求和。核心思路删空行从下往上遍历整行CountA0就删除必须倒着删否则会漏。去重用RemoveDuplicates以指定列为依据保留首次出现的行。格式统一逐格Trim去首尾空格如果是文本型数字用Val转成真数值。完整代码放进一个.xlsm模块的普通过程即可Alt F11→ 插入 → 模块。运行前先点中你要清洗的工作表。Option Explicit 一键清洗当前工作表删空行 去重 格式统一 Sub CleanSheet() Dim ws As Worksheet Dim lastRow As Long, lastCol As Long Set ws ActiveSheet lastRow ws.Cells(ws.Rows.Count, 1).End(xlUp).Row If lastRow 2 Then MsgBox 没有数据可清洗。, vbExclamation Exit Sub End If lastCol ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column Application.ScreenUpdating False ① 删除完全为空的行从下往上删避免漏删 Dim i As Long For i lastRow To 1 Step -1 If Application.WorksheetFunction.CountA(ws.Rows(i)) 0 Then ws.Rows(i).Delete End If Next i 重新计算行数删除后变了 lastRow ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ② 去重以第 1 列为依据有表头 ws.Range(A1).Resize(lastRow, lastCol).RemoveDuplicates _ Columns:1, Header:xlYes ③ 格式统一去首尾空格 文本数字转数值 Dim r As Long, c As Range For r 2 To lastRow For Each c In ws.Range(A r).Resize(1, lastCol) If Len(Trim(c.Value)) 0 Then c.Value Trim(c.Value) 去掉首尾空格 If IsNumeric(c.Value) Then 文本型数字 → 真数值 c.Value Val(c.Value) c.NumberFormat General End If End If Next c Next r Application.ScreenUpdating True MsgBox 清洗完成空行已删、重复已去、格式已统一。, vbInformation End Sub逐段看懂代码段作用Set ws ActiveSheet对当前选中的工作表操作灵活不写死表名。For i lastRow To 1 Step -1倒序遍历正序删行会跳过下一行倒序才稳妥。CountA(ws.Rows(i)) 0整行一个非空单元格都没有才算空行。RemoveDuplicates Columns:1以第 1 列值为准去重多列判重用Array(1,2)。Trim(c.Value)去掉单元格首尾空格中间空格不去。Val(c.Value)把文本型数字转成可计算的真数值。Application.ScreenUpdating关掉屏幕刷新几千行清洗不卡顿结束再打开。进阶多列去重、批量处理、日期统一多列同时判重只有当第 1 列和第 2 列都相同才算重复传数组即可ws.Range(A1).Resize(lastRow, lastCol).RemoveDuplicates _ Columns:Array(1, 2), Header:xlYes批量清洗工作簿里所有表把清洗逻辑包进一个循环Dim sh As Worksheet For Each sh In ThisWorkbook.Worksheets 把上面的清洗代码对 sh 执行一遍 注意把代码里的 ws 改成 sh Next sh日期文本统一如果日期被存成 “2026.8.1” 这种文本先替换点号为斜杠再转日期If InStr(c.Value, .) 0 Then c.Value Replace(c.Value, ., /) c.Value CDate(c.Value) c.NumberFormat yyyy-mm-dd End If常见坑表坑现象解决用 SpecialCells 删空行SpecialCells(xlCellTypeBlanks).EntireRow.Delete会误删只有部分空格的行改用CountA0判整行空从下往上删。正序删行删完一行后面的行上移下一行被跳过漏删务必For i lastRow To 1 Step -1。去重只判一列两行第1列不同但其他列全同没被去重多列判重用Array(1, 2, ...)。前导零丢失工号00123被 Val 成 123工号/编码类列别转数值保留文本可加判断跳过。中间双空格Trim只去首尾中间多个空格还在用Application.WorksheetFunction.Clean或替换处理。忘了恢复刷新屏幕卡住不动确保结尾ScreenUpdating True。小结数据清洗是 Excel 自动化的地基删空行、去重、格式统一这三板斧几乎出现在每一个真实项目里。把它做成一键宏之后前面第 7 篇生成合同、第 8 篇发邮件的数据源就能稳稳接上。下一篇预告《VBA 自动合并多个工作簿把散落各处的文件一键汇成总表》。
延伸阅读

更多相关文章

2026/10/25 2:01:25

Java开发中的数据合规实践与面试策略

1. 行业背景与问题现状今年315晚会曝光了AI训练数据乱象后,整个科技行业都在重新审视数据伦理问题。作为从业十年的Java技术面试官,我发现这场风波正在深刻影响着开发者的求职环境。特别在金融、医疗等强监管领域,企业对候选人技术伦理意识的…

2026/10/24 13:48:04

Chat0:免费极速的开源AI聊天应用完整指南

Chat0:免费极速的开源AI聊天应用完整指南 【免费下载链接】chat0 Blazingly-fast, free, open source AI chat app. Discord - https://discord.gg/mQSPrxVryy 项目地址: https://gitcode.com/gh_mirrors/ch/chat0 Chat0 是一款开源、免费的 AI 聊天应用&…

2026/10/27 9:19:19

Linux显示驱动调试工具全解析:从硬件信号到内核链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 9:19:19

从定时器初值到MAX7219:51单片机数码管秒表设计避坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 9:19:19

四旋翼PID控制仿真:从动力学建模到课设达标闭环实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 9:14:18

永磁同步电机低速无感FOC:d轴方波高频注入原理与工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 0:20:20

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/26 1:53:47

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/27 0:59:21

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/27 0:02:28

WorkBuddy_新建任务与工作模式19_“模式选错”的典型代价

“模式选错”的典型代价 摘要 在软件工程中,设计模式、架构模式、并发模式乃至团队协作模式的选择,往往在项目早期就决定了后续的开发效率和维护成本。本文通过多个真实场景,剖析“模式选错”带来的典型代价——包括返工成本、技术债务累积、…

2026/10/27 0:02:28

WorkBuddy_新建任务与工作模式20_新手推荐路径

新手推荐路径 摘要 在 AI 辅助开发工具快速普及的今天,新手面对最多的困惑往往不是"工具够不够强",而是"我该从哪一步开始用"。本文提出一条经过实践验证的三阶段学习路径:先从 Ask(问答式交互)起…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑