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 dễ hiểu, “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 vớ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à 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ờ hãy 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), mẫu này khớp với tất cả các số từ 0 đến 7, vì vậy các kết quả khớ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 loại 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 hợp chính xác của chuỗi được cung cấp. Ví dụ: chuỗi ký tự chữ “EFG” chỉ đơn giản là tìm kiếm tất cả các kết quả khớp của “EFG” trong văn bản được cung cấp.
  • Metacharacters không là gì 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 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 lẻ 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 lẻ 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 phải 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ự không phải chữ số 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 ta, 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.
  • Trường hợp bỏ qua: Đâ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ố, 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 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, FALSE.
  • Thực thi: Thao tác 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.

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

đều đặn

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

Sau đó, 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.

thú vị bài viết...