Hàm tự tạo trong VBA để bỏ chữ khỏi số và ngược lại

Cách dùng hàm tự tạo trong VBA để bỏ chữ khỏi số

Nếu bạn đang sử dụng một phiên bản Excel cũ hơn hoặc các công thức bên trên quá khó nhớ để áp dụng, và bạn sẵn sàng sử dụng VBA trong Excel, thì chúng ta có thể sử dụng ngôn ngữ lập trình VBA trong Excel để có thể xử lý vấn đề tách chữ ra khỏi số này:
Function RemoveText(str As String)
    Dim sRes As String
    sRes = ""
    For i = 1 To Len(str)
        If True = IsNumeric(Mid(str, i, 1)) Then
            sRes = sRes & Mid(str, i, 1)
        End If
    Next i
    RemoveText = sRes
End Function
Ngoài đoạn code phía trên sử dụng vòng lặp trong VBA, chúng ta còn có thể sử dụng "Regular Expression" trong VBA để giải quyết vấn đề này như sau.
Logic là chúng ta sẽ loại bỏ toàn bộ các ký tự không phải là các ký tự số từ 0 tới 9.
Function RemoveText(str As String) As String
    With CreateObject("VBScript.RegExp")
        .Global = True
        .Pattern = "[^0-9]"
        RemoveText = .Replace(str, "")
    End With
End Function

# Cách sử dụng trong file Excel cũng rất đơn giản như sau:

=RemoveText(A1)
với A1 là ô chứa dữ liệu cần xử lý.
Lưu ý:
Cả cách dùng hàm Excel và cách dùng hàm tự tạo trong VBA đều cho kết quả là chuỗi “234”, để chuyển thành số, chúng ta có thể thực hiện một trong những cách sau đây:
=RemoveText(A1) + 0
=RemoveText(A1) * 1
=VALUE(RemoveText(A1))

Cách lọc bỏ số, giữ lại chữ trong ô dữ liệu của Excel

Sau đây là đoạn code để bạn có thể thực hiện xử lý dữ liệu - loại bỏ số ra khỏi chữ:
Function RemoveNumbers(str As String)
    Dim sRes As String
    sRes = ""
    For i = 1 To Len(str)
        If False = IsNumeric(Mid(str, i, 1)) Then
            sRes = sRes & Mid(str, i, 1)
        End If
    Next i
    RemoveNumbers = sRes
End Function
Chúng ta cũng có thể sử dụng "Regular Expression" trong VBA.
Function RemoveNumbers(str As String) As String
    With CreateObject("VBScript.RegExp")
        .Global = True
        .Pattern = "[0-9]"
        RemoveNumbers2 = .Replace(str, "")
    End With
End Function
Trong trường hợp bạn cần xử lý nhiều dữ liệu, thì đoạn code sử dụng "Regular Expression" sẽ hoạt động nhanh hơn.

# Cách sử dụng trong một Worksheet Excel như sau:

=TRIM(RemoveNumbers(A1))
Hi vọng qua bài chia sẻ này, các bạn đã biết thêm một kỹ thuật rất hữu ích dùng để xử lý dữ liệu trong Excel VBA.