Excel S01 | Xóa bỏ khoảng trắng

Sử dụng để xóa các kí tự không mong muốn trong dữ liệu, đặc biệt là các kí tự không hiển thị (non-printable characters), không thể replace.

Mục đích

Nhiều lần bạn gặp những báo cáo, những file excel xuất từ phần mềm ra chứa những kí tự trống nhưng lại không phải khoảng trắng (space).
Những kí tự này tồn tại khiến định dạng của ô không đúng, đặc biệt là định dạng số. Ví dụ như ảnh dưới đây:

Kí tự trống không hiển thị

Có thể thấy số 63000 tuy nằm ở ô M16 nhưng ở phía sau nó còn nhiều kí tự không hiển thị nữa nên vị trí bị đẩy qua trái rất nhiều và che mất viền (border) của ô M16 (nhìn ô M17 để rõ hơn).
Nếu paste sang Word và bật Show Hidden Symbol lên thì sẽ thấy như thế này:

Kí tự trống không hiển thị trong Word

Với những trường hợp như thế này không thể Replace. Lí do vì các kí tự phía sau hiểu thị giống nhau nhưng bản chất khác nhau, nếu bạn copy vào trường Find xong Replace cũng chỉ được từng kí tự 1.
Khi đó chúng ta cần 1 chút VBA ở đây. Mở file Excel, F12 tạo bản copy để thao tác, tránh mất dữ liệu do không thể Undo. Alt + F11 và paste đoạn dưới đây vào thôi.

Giải pháp

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
Function AlphaNumericOnly(strSource As String) As String
Dim i As Integer
Dim strResult As String

    For i = 1 To Len(strSource)
        Select Case Asc(Mid(strSource, i, 1))
            Case 44, 46, 48 To 57, 65 To 90, 97 To 122: 'this is the character you want to keep
    			strResult = strResult & Mid(strSource, i, 1)
        End Select
    Next
    AlphaNumericOnly = strResult

End Function

Sub CleanAll()
Dim rng As Range

    For Each rng In Sheets("Sheet1").Range("H10:Q1500").Cells
        rng.Value = AlphaNumericOnly(rng.Value)
    Next

End Sub

Giải thích

Dòng 7: Mã ASCII của các kí tự muốn giữ lại
Dòng 17: Đổi tên Sheet và Range cho phù hợp với khoảng cần xóa bỏ kí tự.