VBA RegEx | Làm thế nào để sử dụng Biểu thức chính quy trong VBA Excel? (Ví dụ)

RegEx trong Excel VBA là gì?

RegEx là viết tắt của “ Biểu thức chính quy ” trong VBA Excel và là một chuỗi các ký tự xác định mẫu tìm kiếm để tìm một mẫu ký tự cụ thể trong một chuỗi giá trị. Nói một cách đơn giản “chúng ta có thể tạo một mẫu biểu thức chính quy và sử dụng nó để tìm kiếm chuỗi của mẫu đó”.

VBA RegEx là một mô hình đối tượng. Tôi biết nó là đáng sợ khi nhìn vào lời giải thích nhưng vấn đề là bản chất của đối tượng. Một điều bạn cần nhớ ở đây là VBA RegEx (Biểu thức chính quy) là một đối tượng hàm văn bản giống như các hàm văn bản khác của chúng ta “LEFT, RIGHT, MID”.

Làm thế nào để kích hoạt RegEx trong Excel VBA?

Như tôi đã nói VBA RegEx là một mô hình đối tượng trong VBA giống như phần mềm bên ngoài của chúng tôi như “MS Word” và “MS PowerPoint”. Tương tự, RegEx cũng là một Mô hình Đối tượng Thành phần (COM) mà chúng ta cần tham chiếu trong trình soạn thảo VBA. Để bật RegEx, hãy làm theo các bước dưới đây.

Bước 1: Đi tới Visual Basic Editor (Alt + F11)

Bước 2: Vào Công cụ và Tài liệu tham khảo.

Bước 3: Bây giờ bạn sẽ thấy các tham chiếu đến Dự án VBA. Cuộn xuống và chọn “Microsoft VBScript Regular Expression 5.5”

Bước 4: Bây giờ nhấp vào OK. Bây giờ chúng ta có thể truy cập đối tượng RegEx này bằng mã hóa VBA.

Ví dụ - Bây giờ tôi sẽ chỉ cho bạn một ví dụ đơn giản. Giả sử bạn có các từ “Bán hàng 2019, Bán hàng 2018 và Bán hàng 2017”. Nếu bạn xác định mẫu là [0 - 7] thì mẫu này khớp với tất cả các số từ 0 đến 7, do đó, các kết quả phù hợp của chúng ta sẽ là 201, 201 và 2017 trong mỗi chuỗi.

Mẫu VBA RegEx

Mẫu của hàm VBA RegEx trông rất đáng sợ và cần một chút thời gian để hiểu mẫu. Chúng ta có thể thấy hai loại chuỗi ký tự ở đây, một là “Ký tự chữ” và một loại khác là “Siêu ký tự”.

  • Ký tự Literal tìm kiếm kết quả khớp chính xác của chuỗi được cung cấp. Ví dụ: chuỗi ký tự theo nghĩa đen “EFG” chỉ đơn giản là tìm kiếm tất cả các kết quả phù hợp của “EFG” trong văn bản được cung cấp.
  • Siêu ký tự không là gì khác ngoài sự kết hợp của các ký tự có ý nghĩa chính xác trong mẫu RegEx. Điều này hoàn toàn khác so với Nhân vật văn học. Đó là một chủ đề lớn cần đề cập, dưới đây là một số cú pháp quan trọng.
Cú pháp Sự miêu tả Thí dụ Đối sánh ví dụ
. Nó khớp với bất kỳ ký tự đơn nào của chuỗi đầu vào pt Vật nuôi. Nồi, Đặt, Mẫu
[] Nó khớp với bất kỳ ký tự đơn nào giữa dấu ngoặc của chuỗi đầu vào [pt] Nó khớp với p hoặc t
[^] Nó khớp với bất kỳ ký tự đơn nào, không phải giữa dấu ngoặc của chuỗi đầu vào [^ pt] Nó không khớp với p hoặc t
[Đầu tiên-Cuối cùng] Nó khớp với bất kỳ ký tự nào giữa phạm vi được cung cấp trong dấu ngoặc [0-9] Nó khớp với bất kỳ chữ số nào từ 0 đến 9
[az] Nó khớp với bất kỳ ký tự viết thường nào từ a đến z
[AZ] Nó khớp với bất kỳ ký tự viết hoa nào từ A đến Z
\S Nó khớp với bất kỳ ký tự khoảng trắng nào - Khớp với khoảng trắng, dòng mới hoặc ký tự tab
\S Nó khớp với bất kỳ ký tự không có khoảng trắng nào - Các ký tự phù hợp không phải là Dấu cách, không phải Dòng mới hoặc không phải là Ký tự tab
\ d Nó khớp với bất kỳ ký tự chữ số đơn nào SE 5 VG 6 Trận đấu 5 và 6
\ D Nó khớp với bất kỳ ký tự nondigit nào SE 5 VG 6 Đối sánh với SEVG

Thuộc tính và phương thức của đối tượng RegEx

Giống như tất cả các mô hình đối tượng của chúng tôi, RegEx cũng có các thuộc tính và phương thức riêng của nó. Bây giờ chúng ta sẽ xem chi tiết từng cái một.

Thuộc tính của VBA Regex Object

  • Mẫu: Cái này được sử dụng để khớp với chuỗi được cung cấp.
  • Bỏ qua Trường hợp: Đây là bỏ qua các ký tự viết hoa và viết thường.
  • Toàn cục : Nếu bạn muốn tìm tất cả các kết quả phù hợp trong mẫu thì TRUE là đối số hoặc nếu không, kết quả phù hợp đầu tiên sẽ được tìm thấy.
  • Nhiều dòng: Nếu bạn muốn tìm các dấu ngắt dòng mới, bạn có thể sử dụng điều này.

Phương thức của đối tượng RegEx

  • Kiểm tra: Đây là để kiểm tra xem mẫu có thể được tìm thấy trong chuỗi được cung cấp hay không. Điều này sẽ trả về TRUE nếu được tìm thấy hoặc nếu không là FALSE.
  • Thực thi: Điều này sẽ trả về tất cả các kết quả phù hợp của mẫu với chuỗi tìm kiếm.
  • Thay thế: Thao tác này sẽ thay thế chuỗi tìm kiếm bằng chuỗi mới.

Ví dụ về RegEx trong VBA Excel

Bây giờ hãy xem mã VBA ví dụ dưới đây.

Bạn có thể tải xuống Mẫu VBA RegEx Excel này tại đây - Mẫu VBA RegEx Excel

Mã:

Sub RegEx_Example () Dim RegEx As Object, MyString As String Set RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "[0-9] +" End With MyString = "Ngày sinh năm 1985" MsgBox RegEx .Test (MyString) MyString = "Ngày sinh Năm là ???" MsgBox RegEx.Test (MyString) End Sub

quái dị

Trong đoạn mã trên, chúng ta đã thiết lập mẫu để tìm kiếm số từ 0 đến 9 như sau.

 Với RegEx .Pattern = "[0-9] +" Kết thúc bằng 

Khi đó, biến MyString = “Ngày sinh năm 1985” giữ các giá trị từ 0 đến 9, vì vậy hộp thông báo của chúng ta sẽ trả về TRUE.

MyString = “Ngày sinh năm là ???” không có bất kỳ số nào từ 0 đến 9 vì vậy sẽ trả về FALSE khi kết quả hộp thông báo.


$config[zx-auto] not found$config[zx-overlay] not found