Phương pháp thay thế (Replace) là một trong những kỹ thuật vô cùng hữu ích trong lập trình VBA, đặc biệt khi chúng ta cần quản lý và xử lý dữ liệu từ các nguồn khác nhau đưa vào bảng tính. Với phương pháp này, bạn có thể dễ dàng thay đổi nội dung đã có sẵn trong bảng tính, hoặc thậm chí áp dụng cho nhiều bảng khác nhau một cách nhanh chóng.
Trong bài viết này, chúng ta sẽ cùng nhau khám phá chi tiết cách sử dụng phương pháp này trong VBA cũng như các ứng dụng thực tế của nó.
1. Tìm hiểu thông qua việc Record Macro thao tác Replace
Thao tác thay thế (Replace) trong Excel dễ dàng thực hiện qua nút lệnh Find & Select / Replace hoặc phím tắt Ctrl + H. Khi mở cửa sổ Replace, giao diện sẽ hiện ra như sau:
Giao diện Replace trong Excel
Để tiến hành thay thế tên “Long” thành “Tuấn”, bạn thực hiện như sau:
- Find what: Long
- Replace with: Tuấn
- Nhấn nút Replace All
Sau khi thực hiện, chúng ta sẽ nhận được câu lệnh sau:
Trong câu lệnh đó, chúng ta cần chú ý đến những mục quan trọng sau:
- Cells: Xác định vùng cần thực hiện việc Replace. Nếu không chỉ định rõ, Excel sẽ coi như toàn bộ các Cell trong Sheet đó.
- Replace What: Là đối tượng bị thay thế.
- Replacement: Là đối tượng sẽ được sử dụng để thay thế (kết quả sau khi thay thế).
Lưu ý:
- Không thể viết được tiếng Việt có dấu trong VBA (ví dụ như từ “Tuấn” bị lỗi) nên bạn phải thực hiện gán biến gián tiếp.
- Nếu không có đối tượng Replace What (không có đối tượng bị thay thế) thì sẽ không có kết quả gì, do đó cần có cảnh báo cho trường hợp không tìm thấy đối tượng cần thay thế.
2. Ứng dụng Replace trong một số trường hợp
Xóa một chuỗi từ một vị trí xác định
Ví dụ về tính năng Replace
Trong ví dụ trên, chúng ta sẽ tìm hiểu câu lệnh thay thế trong VBA để xóa các nội dung nằm trong dấu ngoặc và cả dấu ngoặc đơn (lưu ý là có thêm dấu cách trước dấu mở ngoặc đơn).
Câu lệnh VBA như sau:
Sub RemoveContent()
Dim rng As Range
Set rng = ThisWorkbook.Sheets("Sheet1").Range("A1:A10")
rng.Replace What:="(*)", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
End Sub
Xóa một chuỗi nằm trong một chuỗi lớn
Tương tự ví dụ trên, nhưng trong trường hợp này nội dung cần xóa nằm giữa đoạn chuỗi ký tự.
Câu lệnh VBA có thể được viết như sau:
Sub RemoveSubstring()
Dim rng As Range
Set rng = ThisWorkbook.Sheets("Sheet1").Range("A1:A10")
rng.Replace What:="text_to_remove", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
End Sub
Kết luận
Chức năng thay thế có thể được ứng dụng cho nhiều mục đích khác nhau: Thay thế chuỗi ký tự này thành chuỗi ký tự khác, xóa bớt một chuỗi ký tự (thay bằng ký tự rỗng).
Việc sử dụng chức năng thay thế có thể kết hợp với lệnh Sắp xếp (Sort) để có thể tự sắp xếp lại dữ liệu sau khi thay thế bằng dữ liệu mới.
Chúc các bạn học tốt cùng Học Excel Online!
Tải về file mẫu tại địa chỉ: http://bit.ly/2DDyEwr