前言:数据清洗的痛点与自动化价值
在数据分析流程中,数据清洗通常占据60%以上的工作时间。某电商企业统计显示,人工处理10万行数据需耗时48小时,而VBA自动化可将时间压缩至2小时。本文将系统讲解如何通过VBA构建从基础清洗到企业级批量处理的全流程解决方案,并提供可复用的代码模板。
一、基础清洗:单工作表核心操作
1.1 动态范围识别与空格清理
vba
Sub CleanSpaces() |
|
Dim ws As Worksheet: Set ws = ActiveSheet |
|
Dim lastRow As Long, rng As Range |
|
' 动态识别数据范围(自动适应数据量) |
|
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row |
|
Set rng = ws.Range("A1:Z" & lastRow) |
|
' 批量清理空格(保留单元格格式) |
|
Dim cell As Range |
|
For Each cell In rng |
|
If Not IsEmpty(cell) Then |
|
cell.Value = Trim(cell.Value) |
|
End If |
|
Next cell |
|
MsgBox "空格清理完成,处理行数:" & lastRow, vbInformation |
|
End Sub |
技术亮点:
End(xlUp)
动态定位最后一行Trim()
函数保留原始格式的同时清除首尾空格- 空单元格判断避免处理无效数据
1.2 缺失值标记与填充
vba
Sub HandleMissingValues() |
|
Dim ws As Worksheet: Set ws = Sheets("数据源") |
|
Dim checkCol As Range, cell As Range |
|
' 标记缺失值(红色背景) |
|
Set checkCol = ws.Range("B2:B1000") ' 假设B列为关键列 |
|
checkCol.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=""""" |
|
checkCol.FormatConditions(1).Interior.Color = &HFF& ' 红色 |
|
' 填充缺失值为"NA"(需启用宏) |
|
For Each cell In checkCol |
|
If cell.Value = "" Then cell.Value = "NA" |
|
Next cell |
|
End Sub |
扩展功能:
- 结合
ISBLANK()
函数实现条件格式 - 使用
Application.InputBox
动态选择检查列
1.3 重复数据删除(字典法)
vba
Sub RemoveDuplicates() |
|