Hướng dẫn cách sử dụng Regular Expression và cách tra cứu thời gian bằng VBA

Regular Expressio? Và cách tra cứu thời gian bằng VBA là như thế nào? Là câu hỏi mà không phải ai cũng có câu trả lời chính xác. Hãy đọc bài viết dưới đây do eLib biên soạn để tìm cho mình được câu trả lời chính xác nhất nhé.

Hướng dẫn cách sử dụng Regular Expression và cách tra cứu thời gian bằng VBA

1. Hướng dẫn cách sử dụng Regular Expression trong VBA

1.1. Khái niệm về Regular Expression

Đây là một thuật ngữ thường dùng trong lập trình, giúp tìm ra những dữ liệu được sắp xếp theo 1 quy luật nhất định trong 1 chuỗi văn bản.

Ví dụ:

Những con số nằm trong 1 đoạn text: Số điện thoại, số nhà

Thông tin Email nằm trong 1 đoạn text

Khi sử dụng Regular Expression sẽ giúp chúng ta dễ dàng tách được những dữ liệu có tính quy luật ra khỏi 1 đoạn text => Được ứng dụng nhiều trong việc xử lý dữ liệu, trích lọc dữ liệu, đặc biệt trong những bảng dữ liệu lớn, phức tạp mà hầu hết đều phải làm bằng tay nếu không sử dụng VBA trong excel.

1.2. Cách sử dụng Regular Expression

Chúng ta cùng tìm hiểu về cách sử dụng chức năng này thông qua ví dụ sau:

Cho đoạn text tại ô A6 như sau:

Cách sử dụng Regular Expression

Trích lọc những nội dung thỏa mãn điều kiện:

1 ký tự bất kỳA, B, C, D… kết hợp với đoạn text “-hoc excel online”

Ví dụ:

A-hoc excel online

B-hoc excel online

Bước 1: Mở cửa sổ Visual Basic Application (VBA)

Có 2 cách để mở cửa sổ VBA:

  • Cách 1: Bấm tổ hợp phím tắt Alt + F11
  • Cách 2: Trong tab Developer, bấm chọn Visual Basic

Bước 2: Tạo mới 1 Module

Bấm chuột phải vào mục Project – VBAProject rồi chọn Insert / Module

Tạo mới 1 Module

Bước 3: Mở cửa sổ Locals trong VBA để giúp việc  hiểu về cách sử dụng Regular Expression dễ hơn

Trong tab View  > Chọn mục Locals Window

Mở cửa sổ Locals trong VBA

Bước 4: Tạo 1 sub Test và thực hiện như sau

Sub test_RegExp() 'Sử dụng Regular Expression trong VBA
Dim RE As Object 'Khai báo biến Regular Expression để sử dụng
Dim strPattern As String 'Khai báo biến đại diện cho đoạn chuỗi text cần xử lý bởi RE
Dim matches As Object 'Kết quả sau khi thực hiện bởi RE

strPattern = "[ABCD]-hoc excel online" 'Thiết lập quy luật hiển thị dữ liệu
Set RE = CreateObject("VBScript.RegExp") 'Thiết lập Object cho Regular Expression
RE.Pattern = strPattern 'Xác định đoạn chuỗi sẽ xử lý bởi RE
RE.Global = True 'Lấy toàn bộ kết quả có được trong chuỗi
'Nếu RE.Global = False hoặc không sử dụng thì chỉ lấy được 1 kết quả đúng đầu tiên tìm được
Set matches = RE.Execute([A6]) 'Thiết lập kết quả khi sử dụng RE cho ô A6
End Sub

Lưu ý:

Nếu chuỗi strPattern có sử dụng tiếng việt có dấu thì chúng ta có thể đặt chuỗi đó vào 1 vị trí xác định trong file excel rồi tham chiếu tới vị trí đó (vì trong VBA không viết trực tiếp được tiếng việt có dấu nên có thể sử dụng gián tiếp)

strPattern = “[ABCD]-” & sheet1.Cells(7,1).value

Kiểm tra kết quả:

Đặt Break Point tại End Sub rồi thực  hiện Run Macro này. Kết quả thu được tại mục Local như sau:

Như vậy 3 kết quả của matches đã đúng như chúng ta mong muốn.

2. Tra cứu thời gian bằng VBA

2.1. Những đối tượng xác định thời gian trong VBA

Xác định Ngày hiện tại

Để xác định ngày hiện tại trong VBA thì chúng ta sử dụng DATE chứ không phải TODAY. Câu lệnh gọi giá trị ngày hiện tại như sau:

Sub Time_01() 'Xác định ngày hiện tại
Dim a As Date
a = Date
MsgBox a
End Sub

Xác  định Ngày+Giờ hiện tại

Sử dụng đối tượng là NOW, tương tự hàm NOW trong Excel

Câu lệnh gọi giá trị ngày giờ hiện tại như sau:

Sub Time_02() 'Xác định ngày giờ hiện tại
Dim a As Date
a = Now
MsgBox a
End Sub

2.2. Ứng dụng xác định thời gian thực hiện 1 câu lệnh VBA

Tại mỗi thời điểm bắt đầu và kết thúc mỗi câu lệnh thì giá trị thời gian xác định bởi NOW là khác nhau. Do đó chúng ta có thể dựa vào điều này để xác định độ chênh lệch thời gian khi bắt đầu và khi kết thúc 1 câu lệnh. Đó chính là thời gian VBA thực hiện xong câu lệnh đó.

Sub Time_03() 'Xác định thời gian thực hiện câu lệnh
Dim t As Date
t=Now() 'Thời gian bắt đầu câu lệnh
'Nội dung câu lệnh đặt tại đây
'Xác định thời gian thực hiện câu lệnh
MsgBox Format(Now() - t, "hh:mm:ss")
End Sub

Biến  “t” là thời điểm bắt đầu, khi gán biến t cho thời điểm đó thì giá trị thời điểm đó sẽ được ghi nhận và cố định lại.

Khi kết thúc câu lệnh thì giá trị Now sẽ thay đổi. Now() – t sẽ thể hiện được  độ lệch giữa 2 khoảng thời gian.

Format lại giá trị hiệu của 2 khoảng thời gian về dạng giờ:phút:giây để xác định cụ thể độ lệch thời gian.

Việc sử dụng biến thời gian trong VBA rất đơn giản. Bạn chỉ cần gán giá trị thời gian đó vào biến. Tại thời điểm gán thì giá trị thời gian đó sẽ được lưu lại và có thể sử dụng vào vị trí bất kỳ sau khi gán.

Như vậy bài viết đã hướng dẫn cho bạn cách sử dụng Regular Expression và cách tra cứu thời gian bằng VBA. Hy vọng rằng bài viết này sẽ giúp ích cho các bạn. Chúc bạn thực hiện thao tác thành công!

Ngày:13/08/2020 Chia sẻ bởi:Xuân Quỳnh

CÓ THỂ BẠN QUAN TÂM