Chuỗi VBA cho đến nay | Chuyển đổi giá trị chuỗi thành ngày tháng trong Excel VBA

Chuỗi VBA trong Excel đến ngày

Trong Vba có một phương thức mà qua đó chúng ta có thể chuyển đổi một chuỗi nhất định thành một ngày tháng và phương thức này được gọi là hàm CDATE trong vba, đây là một hàm có sẵn trong VBA và các phần cần thiết cho hàm này là trước tiên phải chuyển đổi chuỗi thành một số và sau đó chúng tôi chuyển đổi số đã cho thành một ngày. Định dạng kết quả chỉ phụ thuộc vào định dạng ngày hệ thống.

Một trong những vấn đề chung mà tất cả chúng ta phải đối mặt với excel là “Ngày & Giờ” và thường được lưu trữ dưới dạng giá trị văn bản và ban đầu không được chú ý. Nhưng khi chúng được yêu cầu sử dụng thời gian đó, chúng ta sẽ biết rằng những giá trị đó được lưu trữ dưới dạng văn bản và hoàn toàn không biết cách xử lý chúng. “Ngày & Giờ” là hai thứ được kết hợp trong một phần tử nhưng một khi những giá trị đó được lưu trữ dưới dạng giá trị văn bản thì rất khó để làm việc với.

Làm thế nào để chuyển đổi giá trị chuỗi thành ngày?

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

Ví dụ 1

Khi biến VBA được khai báo và gán dưới dạng Chuỗi, bất kỳ thứ gì được gán cho biến đó sẽ chỉ được coi là chuỗi. Để biết ví dụ, hãy xem đoạn mã dưới đây.

Mã:

 Sub String_To_Date () Dim k As String k = "10-21" MsgBox k End Sub 

Trong mã ở trên, biến “k” được định nghĩa là kiểu dữ liệu “Chuỗi” và đối với biến này, chúng tôi đã gán giá trị là “10-21”.

Ok, hãy chạy mã và xem những gì chúng ta nhận được trong hộp thông báo trong VBA.

Chúng tôi chỉ nhận giá trị là 10-21, nhưng thông thường, các giá trị này là ngày tháng, không phải giá trị chuỗi. Vì vậy, mặc dù kiểu dữ liệu được gán là “Chuỗi”, chúng ta vẫn có thể chuyển đổi sang ngày tháng bằng cách sử dụng hàm chuyển đổi kiểu dữ liệu CDATE VBA.

Mã:

 Sub String_To_Date () Dim k As String k = "10-21" MsgBox CDate (k) End Sub 

Ở trên, trước khi hiển thị kết quả của biến “k” trong hộp thông báo, chúng ta đã gán hàm CDATE. Một điều chỉnh nhỏ được thực hiện, hãy xem nó tạo ra tác động lớn như thế nào.

Bây giờ chúng ta sẽ thấy kết quả là “Ngày” không còn là giá trị “Chuỗi”.

Ví dụ số 2

Bây giờ, hãy xem đoạn mã dưới đây để làm ví dụ.

Mã:

 Sub String_To_Date () Dim k As String k = 43599 MsgBox k End Sub 

Tại thời điểm này, mã trên sẽ hiển thị kết quả là “43599” như chúng tôi đã chỉ định ở trên.

Nhưng khi chúng ta sử dụng hàm CDATE, nó sẽ chuyển đổi thành giá trị ngày tháng.

Mã:

 Sub String_To_Date () Dim k As String k = 43599 MsgBox CDate (k) End Sub 

Kết quả sau khi áp dụng hàm CDATE như sau.

Vì excel lưu trữ ngày dưới dạng số sê-ri, số sê-ri 43599 được chỉ định của chúng tôi bằng với ngày 14/05/2019 khi định dạng ngày được áp dụng.

Chúng tôi cũng có thể áp dụng định dạng cho ngày là “DD-MMM-YYYY” để đọc chính xác ngày.

Mã:

 Sub String_To_Date1 () Dim k As String Dim DateValue As Date k = 43599 DateValue = CDate (k) MsgBox Format (DateValue, "DD-MMM-YYYY") End Sub 

Ở trên, tôi đã khai báo thêm một biến để lưu trữ kết quả. Đối với biến này, tôi đã áp dụng hàm chuyển đổi CDATE.

Tiếp theo, tôi đã sử dụng hàm FORMAT để áp dụng định dạng của định dạng “DD-MMM-YYYY” và kết quả sẽ như hình dưới đây.

Với điều này, chúng ta có thể đọc rõ ràng phần ngày và phần tháng. Nó cũng phụ thuộc vào định dạng ngày hệ thống của bạn trong excel, vì định dạng ngày hệ thống của tôi là “MM-DD-YYYY” nên nó được hiển thị như vậy nhưng điều đó không phải là trở ngại cho định dạng.

Ví dụ # 3

Bây giờ chúng ta sẽ thấy thực sự ngày tháng được định dạng như thế nào dưới dạng giá trị văn bản trong các ô trang tính. Dưới đây là hình ảnh của các ngày được lưu trữ dưới dạng văn bản trong một trang tính.

Trong cột A từ A2 đến A12, chúng ta có các giá trị tìm ngày nhưng khi chúng ta nhìn vào tab định dạng, nó hiển thị định dạng "Văn bản". Bây giờ chúng ta cần chuyển đổi các giá trị này từ văn bản sang ngày tháng.

Dưới đây là đoạn mã tôi đã viết để chuyển đổi các giá trị ngày tháng được định dạng văn bản thành ngày tháng thực tế.

Mã:

 Sub String_To_Date2 () Dim k As Long 'Dữ liệu nằm trong nhiều ô, vì vậy cần lặp qua từng ô' Open For Loop For k = 2 To 12 'Dữ liệu bắt đầu từ hàng thứ 2 và kết thúc ở hàng thứ 12, vì vậy 2 đến 12 Cells (k, 2) .Value = CDate (Cells (k, 1) .Value) Next k End Sub 

Nếu bạn chạy mã, nó sẽ cho chúng ta kết quả bên dưới.

Những điều cần ghi nhớ

  • CDATE là một hàm chuyển đổi kiểu dữ liệu nhưng có thể được sử dụng để chuyển đổi ngày được lưu trữ trong chuỗi VBA thành các giá trị ngày thực tế.
  • Kết quả của định dạng hàm CDATE chỉ phụ thuộc vào định dạng ngày hệ thống.
  • Ngày tháng được lưu trữ dưới dạng số sê-ri trong excel, vì vậy cần phải định dạng để hiển thị chúng dưới dạng ngày tháng.

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