Day32 - 报表自动化(1)
今日学习目标
- 掌握数据导入技术
- 实现数据清洗和验证
- 完成数据格式标准化
知识点
### 1. 多格式数据导入
- Excel文件:Workbooks.Open方法
- CSV文件:OpenText方法或QueryTables
- 文本文件:Line Input语句
### 2. 数据清洗技术
- 空值处理:IsEmpty、NZ函数
- 重复数据:RemoveDuplicates方法
- 异常值:条件判断和修正
### 3. 格式标准化
- 数据类型统一转换
- 日期格式规范化
- 编码统一(UTF-8)
今日代码
' 数据导入模块
Sub ImportData()
Dim fd As FileDialog
Dim selectedFile As String
Dim wb As Workbook
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.Title = "选择数据文件"
.Filters.Clear
.Filters.Add "Excel文件", "*.xlsx;*.xls"
.Filters.Add "CSV文件", "*.csv"
If .Show = -1 Then
selectedFile = .SelectedItems(1)
Set wb = Workbooks.Open(selectedFile)
Call CleanData(wb.ActiveSheet)
wb.Close SaveChanges:=True
End If
End With
End Sub
' 数据清洗
Sub CleanData(ws As Worksheet)
Dim lastRow As Long
Dim i As Long
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRow
' 处理空值
If IsEmpty(ws.Cells(i, 1)) Then
ws.Cells(i, 1).Value = "未知"
End If
' 处理重复
If i > 2 Then
If ws.Cells(i, 1).Value = ws.Cells(i - 1, 1).Value Then
ws.Rows(i).Delete
i = i - 1
End If
End If
Next i
End Sub练习题
- 编写导入多个CSV文件的代码
- 实现数据验证:检查必填字段
- 统一日期格式为YYYY-MM-DD