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

练习题

  1. 编写导入多个CSV文件的代码
  2. 实现数据验证:检查必填字段
  3. 统一日期格式为YYYY-MM-DD