[VBA Excel] Cách tách ngày khỏi chuỗi văn bản

Rate this post

Đôi khi bạn cần thực hiện tách ngày khỏi chuỗi văn bản không cố định trong Excel. Sử dụng các hàm như LEFT, RIGHT, MID… có thể hơi phức tạp. Vì vậy sử dụng VBA là một cách sẽ giúp bạn phân tách dễ dàng hơn.

Bạn lưu ý, nếu ngày tháng được định dạng đầy đủ theo định dạng dd-MM-yyyy thì nó sẽ có độ dài chuỗi là 10. Vì vậy, nếu bạn có thể tách các phần tử của chuỗi thành các phần tử riêng lẻ và kiểm tra độ dài của từng phần tử thì việc tách ngày sẽ khá đơn giản.

Chia chuỗi thành các phần tử trong VBA

Để chia chuỗi thành từng phần tử, hãy sử dụng hàm TÁCH RA với cú pháp sau:

= SPLIT(Expression As String, [dau-phan-chia])

Code language: JavaScript (javascript)

Trong đó:

  • Expression As String: là một biến kiểu String. Chứa văn bản được tách.
  • [dau-phan-chia]: là ký tự ngăn cách giữa các thành phần của văn bản.

|Ví dụ: chia chuỗi sau thành các phần tử có dấu phân cách ”” (dấu cách).

"Hôm nay là ngày 20-01-2019"

Code language: VB.NET (vbnet)

|Sau đó, bạn có thể sử dụng chức năng:

Dim chuoi As String Dim mang() As String chuoi="Hôm nay là ngày 20-01-2019" mang=Split(chuoi, " ")

Code language: VB.NET (vbnet)

|Trong đó:

  • bring () As String: là khai báo mảng 1 chiều. Nếu trong () trống là độ dài mảng không được xác định. Và phần tử bắt đầu có vị trí là 0.
  • Split (string, ””): sẽ chia chuỗi có dấu phân tách là ”” (dấu cách).

|Do đó, kết quả là:

  • Mang[0]= “Ngày”
  • Mang[1]= ”Nay”
  • Mang[2]= “là”
  • Mang[3]= “ngày”
  • Mang[4]= ”20-01-2019 ″

Cách trích xuất ngày tháng từ mảng dữ liệu VBA

Khi bạn đã chia chuỗi thành các phần tử đơn lẻ, điều tiếp theo bạn cần làm là kiểm tra độ dài của mỗi phần tử đó.

Như đã đề cập ở đầu bài viết, nếu bạn sử dụng định dạng đầy đủ của ngày thì phần tử sẽ có độ dài chuỗi là 10. Vì vậy, bạn cần sử dụng thêm một vòng lặp FOR để quét kiểm tra độ dài. tất cả các phần tử của mảng đều có thể tìm được.

>> Tham khảo: For Loop trong Excel VBA

Dim i As Integer Dim dodaimang As Long dodaimang = UBound(mang) - LBound(mang) For i = 0 To dodaimang Step 1 If Len(mang(i)) = 10 Then MsgBox mang(i) End If Next i

Code language: VB.NET (vbnet)
tach-ngay-thang-nam-tu-chuoi-vba-excel-205-1

Trong đó:

  • UBound (mang): trả về kết quả kiểu Long, giá trị lớn nhất độ dài của mảng.
  • LBound (carry): trả về kết quả kiểu Long, giá trị nhỏ nhất của độ dài mảng.
  • Len (mang (i)) = 10: kiểm tra độ dài của phần tử thứ i nếu = 10. Tức là phần tử chứa ngày tháng năm.

Lời khuyên khi sử dụng hàm SPLIT để chia chuỗi

Cách trên sẽ giúp bạn tách ngày tháng năm dễ dàng. Và chìa khóa sẽ nằm ở chức năng SPLIT.

Trường hợp nếu các phần của chuỗi cách nhau bởi dấu phân cách ”” thì rất dễ thực hiện. Nhưng khi bạn gặp phải các dấu phân tách bổ sung như “,” (dấu phẩy và dấu cách), bạn phải làm thế nào?

|Trong trường hợp đó, vui lòng sử dụng chức năng Replace để thay thế trận đấu trước khi tách. Và cú pháp của hàm Replace như sau:

Replace( Expression As String, Find As String, Replace As String)

Code language: VB.NET (vbnet)

Trong đó:

  • Find As String: văn bản để thay thế.
  • Replace As String: văn bản thay thế.

|Ví dụ: Chuỗi “hôm nay, 20/02/2019”, chứa 2 dấu phẩy được phân tách, đó là ”” và “,“. Vì vậy, bạn cần chuyển đổi “,” thành ”” như sau:

Dim chuoi As String chuoi=Replace("hôm nay, 20/02/2019",", "," ")

Code language: VB.NET (vbnet)

|Kết quả: chuỗi biến sẽ có giá trị:

"hôm nay 20/02/2019"

Code language: VB.NET (vbnet)

|Tiếp theo, sử dụng hàm SPLIT để chia chuỗi hoặc kết hợp cả hai hàm SPLIT và REPLACE vào cùng một dòng lệnh như sau:

mang=Split(Replace("hôm nay, 20/02/2019", ", ", " "), " ")

Code language: VB.NET (vbnet)

Như vậy, qua bài viết này các bạn đã được tìm hiểu qua các hàm Split, Replace và ứng dụng chia chuỗi trong Excel VBA. Sự kết hợp của các hàm này gần như sẽ giúp bạn tách được rất nhiều kiểu dữ liệu trong Excel với VBA.

Tham khảo:

Thanh Thuy

Leave a Reply

Your email address will not be published.