今日学习目标
- 掌握数据导入技术
- 实现数据清洗和验证
- 完成数据格式标准化
知识点
1. 多格式数据导入
- Excel文件:Workbooks.Open方法
- CSV文件:OpenText方法或QueryTables
- 文本文件:Line Input语句
2. 数据清洗技术
- 空值处理:IsEmpty、NZ函数
- 重复数据:RemoveDuplicates方法
- 异常值:条件判断和修正
3. 格式标准化
- 数据类型统一转换
- 日期格式规范化
- 编码统一(UTF-8)
今日代码
vba' 数据导入模块
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
参考解答
1. 使用数组存储文件列表,循环调用ImportData过程导入所有文件。 2. 使用Select Case或If判断字段值,为空时Highlight并记录错误。 3. 使用DateValue函数转换,CDate或Format格式化日期字符串。
由在线工具箱(www.vba.net)整理制作