Phương thức thay thế (Replace) trong VBA - QUẢN TRỊ EXCEL

QUẢN TRỊ EXCEL

Chào mừng các bạn đến với QuanTriExcel.info - Không gì là Không thể... Về thủ thuật Excel, học lập trình VBA, phần mềm chuyên dụng, kế toán, kĩ năng sống ...

Search This Blog

Wednesday, March 25, 2020

Phương thức thay thế (Replace) trong VBA

Phương thức thay thế (Replace) là một phương thức khá hữu ích trong VBA khi chúng ta muốn xử lý dữ liệu từ 1 nguồn khác đưa vào bảng tính, hoặc trường hợp khi chúng ta thay đổi 1 nội dung đã có sẵn mà có liên quan tới các bảng khác, sheet khác trong Excel.
Sau đây chúng ta cùng tìm hiểu cách sử dụng phương thức này trong VBA:

1. TÌM HIỂU THÔNG QUA VIỆC RECORD MACRO THAO TÁC REPLACE

Thao tác thay thế (Replace) trong Excel được thực hiện với nút lệnh Find & Select / Replace hoặc phím tắt Ctrl + H

Mở cửa sổ Replace chúng ta sẽ thấy giao diện như sau:
Thử ghi lại câu lệnh Macro cho trường hợp thay thế tên “Long” thành “Tuấn” như sau:
  • Find what = Long
  • Replace with = Tuấn
  • Bấm chọn Replace All
Chúng ta thu được câu lệnh như sau:
Sub Record_Replace()
Cells.Replace What:="Long", Replacement:="Tu?n", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
view rawRecord_Replace.bas hosted with ❤ by GitHub
Trong câu lệnh trên chúng ta chú ý vào những mục sau:
  • Cells : là vùng mà chúng ta sẽ thực hiện việc Replace. Nếu không nói rõ vùng nào mà chỉ dùng Cells thì 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ẽ dùng để thay thế (kết quả sau khi thay)
Lưu ý:
  • Không viết được tiếng việt có dấu trong VBA (ví dụ như từ Tuấn bị lỗi) => Do đó 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
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 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:
Option Explicit
Sub Replace_Test01() 'Excel VBA to replace strings.
Dim strA As String
Dim strB As String
strA=" (*"
strB=""
Rows("1:10").Replace strA, strB
End Sub
view rawReplace_Test01.bas hosted with ❤ by GitHub
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ự gốc
Câu lệnh VBA như sau:
Sub Replace_Test02() 'Excel VBA for replace with wildcard.
Dim strA As String
Dim strB As String
strA=" (*)"
strB=""
Rows("1:10").Replace strA, strB
End Sub
view rawReplace_Test02.bas hosted with ❤ by GitHub

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ỏ 1 chuỗi ký tự (thay bằng ký tự rỗng)
  • Việc sử dụng chức năng thay thế có thể gắn kèm 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.
#quantriexcel #kynangmoi

No comments:

Post a Comment

Bạn hãy chia sẻ nhận xét ở đây nhé: