這是原始資料
員工編號 | 姓名 | 年齡 | 入職日 | 城市 | 月薪(元) |
---|---|---|---|---|---|
1001 | 王小明 | 28 | 2021/5/10 | Taiepi | 35000 |
1002 | 李小美 | 2021/06/01 | Taipei | 38000 | |
1003 | 張大偉 | -5 | 2021/7/15 | 台北 | 42000 |
1004 | 陳志強 | 45 | 2021-08-20 | Taipei | 38000 |
1005 | 王小明 | 28 | 2021/5/10 | Taiepi | 35000 |
1006 | 陳怡君 | 33 | 2021/9/01 | taiepi | 40000 |
1007 | 吳曉華 | 29 | 2021/10/05 | Taipei | |
1008 | 李小美 | 2021/06/01 | Taipei | 38000 | |
1009 | 周志明 | 120 | 2021/11/15 | Taipei | 37000 |
1010 | 黃大明 | 31 | 2021/12/01 | Taiepi | 41000 |
1. 檢查資料格式與型別
檢查年齡欄位是否為數字,若不是數字就標黃
text
Sub 檢查年齡格式()
Dim cell As Range
For Each cell In Range("C2:C11")
If Not IsNumeric(cell.Value) Or cell.Value = "" Then
cell.Interior.Color = vbYellow
End If
Next
End Sub
處理前:
員工編號 | 姓名 | 年齡 | ... |
---|---|---|---|
1001 | 王小明 | 28 | ... |
1002 | 李小美 | ... | |
1003 | 張大偉 | -5 | ... |
處理後:
(年齡為空白的儲存格底色變黃)
員工編號 | 姓名 | 年齡(黃底) | ... |
---|---|---|---|
1002 | 李小美 | ... |
2. 檢查資料完整性
標記缺失值(年齡、月薪欄位空白標紅)
text
Sub 標記缺失值()
Dim rng As Range, cell As Range
Set rng = Union(Range("C2:C11"), Range("F2:F11"))
For Each cell In rng
If cell.Value = "" Or IsEmpty(cell.Value) Then
cell.Interior.Color = vbRed
End If
Next
End Sub
處理前:
員工編號 | 姓名 | 年齡 | ... | 月薪(元) |
---|---|---|---|---|
1002 | 李小美 | ... | 38000 | |
1007 | 吳曉華 | 29 | ... |
處理後:
(年齡或月薪空白的儲存格底色變紅)
員工編號 | 姓名 | 年齡(紅底) | ... | 月薪(紅底) |
---|---|---|---|---|
1002 | 李小美 | ... | 38000 | |
1007 | 吳曉華 | 29 | ... | |
3. 處理缺失值
將年齡欄位空白填入平均年齡
text
Sub 填補年齡缺失()
Dim rng As Range, cell As Range
Dim sum As Double, count As Long, avg As Double
Set rng = Range("C2:C11")
For Each cell In rng
If IsNumeric(cell.Value) And cell.Value <> "" Then
sum = sum + cell.Value
count = count + 1
End If
Next
If count > 0 Then avg = WorksheetFunction.Round(sum / count, 0)
For Each cell In rng
If cell.Value = "" Or Not IsNumeric(cell.Value) Then
cell.Value = avg
End If
Next
End Sub
處理前:
員工編號 | 姓名 | 年齡 |
---|---|---|
1002 | 李小美 | |
1008 | 李小美 |
處理後:
(空白年齡被填上平均值,假設平均值為31)
員工編號 | 姓名 | 年齡 |
---|---|---|
1002 | 李小美 | 31 |
1008 | 李小美 | 31 |
4. 處理重複值
以員工編號和姓名為主鍵,移除重複資料(只留第一筆)
text
Sub 移除重複資料()
Range("A1:F11").RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes
End Sub
處理前:
員工編號 | 姓名 | ... |
---|---|---|
1001 | 王小明 | ... |
1005 | 王小明 | ... |
處理後:
(1005這筆重複被移除)
員工編號 | 姓名 | ... |
---|---|---|
1001 | 王小明 | ... |
5. 修正錯誤資料
修正城市拼寫錯誤(Taiepi、taiepi→Taipei,台北→Taipei)
text
Sub 修正城市拼寫()
Dim cell As Range
For Each cell In Range("E2:E11")
If LCase(cell.Value) = "taiepi" Or cell.Value = "台北" Then
cell.Value = "Taipei"
End If
Next
End Sub
處理前:
城市 |
---|
Taiepi |
taiepi |
台北 |
處理後:
城市 |
---|
Taipei |
Taipei |
Taipei |
6. 檢查資料一致性與準確性
檢查年齡是否異常(小於0或大於100),異常值標橘色
text
Sub 標記異常年齡()
Dim cell As Range
For Each cell In Range("C2:C11")
If IsNumeric(cell.Value) Then
If cell.Value < 0 Or cell.Value > 100 Then
cell.Interior.Color = RGB(255, 153, 0)
End If
End If
Next
End Sub
處理前:
員工編號 | 姓名 | 年齡 |
---|---|---|
1003 | 張大偉 | -5 |
1009 | 周志明 | 120 |
處理後:
(-5、120 這兩格變橘色)
員工編號 | 姓名 | 年齡(橘底) |
---|---|---|
1003 | 張大偉 | -5 |
1009 | 周志明 | 120 |
7. 資料轉換與標準化
將入職日全部轉為 yyyy-mm-dd 格式
text
Sub 統一入職日期格式()
Dim cell As Range
For Each cell In Range("D2:D11")
If IsDate(cell.Value) Then
cell.Value = Format(cell.Value, "yyyy-mm-dd")
End If
Next
End Sub
處理前:
入職日 |
---|
2021/5/10 |
2021-08-20 |
處理後:
入職日 |
---|
2021-05-10 |
2021-08-20 |
沒有留言:
張貼留言