Chào các anh em trong diễn đàn Sheet & Excel,
Dạo này mình có làm việc nhiều với dữ liệu văn bản, và nhận ra việc xử lý chuỗi ký tự trong Excel đôi khi khá mất thời gian nếu làm thủ công. May mắn là VBA có thể giúp chúng ta tự động hóa rất nhiều tác vụ này. Hôm nay, mình muốn chia sẻ một vài hàm VBA xử lý chuỗi mà mình thấy hữu ích, hy vọng sẽ giúp ích cho mọi người.
Đầu tiên là các hàm cơ bản, quen thuộc nhưng khi kết hợp lại rất mạnh mẽ:
Left(string, length): Lấy ký tự bên trái chuỗi.Right(string, length): Lấy ký tự bên phải chuỗi.Mid(string, start, [length]): Lấy ký tự ở giữa chuỗi.Len(string): Đếm số ký tự trong chuỗi.InStr(string1, string2): Tìm vị trí xuất hiện của chuỗi con (string2) trong chuỗi lớn (string1).Replace(expression, find, replace): Thay thế chuỗi con trong chuỗi lớn.Trim(string): Loại bỏ khoảng trắng thừa ở đầu và cuối chuỗi.
Ví dụ đơn giản, giả sử bạn có mã sản phẩm dạng 'SP-12345-ABC' và muốn lấy phần số '12345':
Sub LayMaSoSanPham()
Dim strMaSP As String
Dim strPhanSo As String
strMaSP = "SP-12345-ABC"
' Tìm vị trí dấu '-' thứ hai
Dim pos1 As Integer
Dim pos2 As Integer
pos1 = InStr(strMaSP, "-")
pos2 = InStr(pos1 + 1, strMaSP, "-")
' Lấy phần số giữa hai dấu '-'
strPhanSo = Mid(strMaSP, pos1 + 1, pos2 - pos1 - 1)
MsgBox "Mã số sản phẩm là: " & strPhanSo
End SubNgoài ra, còn có các hàm xử lý chuỗi mạnh mẽ hơn như Split để tách chuỗi thành mảng dựa trên dấu phân cách, hoặc Join để ghép mảng thành chuỗi. Những hàm này cực kỳ hữu ích khi bạn cần xử lý dữ liệu dạng danh sách trong một ô.
Anh em nào có kinh nghiệm hay các hàm VBA xử lý chuỗi nào hay ho khác, chia sẻ thêm cho mọi người cùng học hỏi nhé!