Menu

Tự động hóa việc chuyển đổi định dạng ngày tháng trong Excel VBA

Liễu Năng Thái 03/06/2026 03:38 469 lượt xem 1 trả lời

Chào mọi người,

Dạo này mình đang làm việc với một file Excel mà dữ liệu ngày tháng nó lộn xộn quá, có file thì định dạng dd/mm/yyyy, có file thì mm/dd/yyyy, có file thì lại là yyyy-mm-dd. Việc xử lý thủ công tốn rất nhiều thời gian và dễ sai sót.

Mình đang tìm cách dùng VBA để tự động chuẩn hóa định dạng ngày tháng về một chuẩn chung, ví dụ là dd/mm/yyyy. Có ai đã từng gặp trường hợp này và có giải pháp VBA nào hay không ạ?

Hiện tại mình đang thử dùng hàm CDate nhưng nó đôi khi bị nhầm lẫn giữa ngày và tháng, đặc biệt là với các ngày nhỏ hơn 12. Ví dụ, ngày 05/06/2023 thì CDate hiểu đúng, nhưng ngày 06/05/2023 thì nó lại hiểu nhầm là tháng 5 thay vì tháng 6.

Mình có nghĩ đến việc dùng các hàm xử lý chuỗi như Left, Mid, Right để tách ngày, tháng, năm ra rồi ghép lại theo đúng định dạng mong muốn. Tuy nhiên, cách này hơi thủ công và nếu định dạng ban đầu quá phức tạp thì sẽ khó xử lý hết.

Mọi người có cao kiến gì không ạ? Có thể chia sẻ một đoạn code VBA mẫu để tham khảo thì tuyệt vời quá.

Mình xin cảm ơn!

0

Chào bạn, mình hiểu nỗi khổ của bạn với dữ liệu ngày tháng lộn xộn. Vấn đề này khá phổ biến.

Hàm CDate đôi khi gặp khó khăn đúng là vậy, đặc biệt khi hệ thống định dạng ngày tháng của máy tính không khớp với định dạng trong file.

Mình có một cách làm khác mà bạn có thể thử, thay vì dùng CDate trực tiếp, bạn có thể kết hợp với việc kiểm tra và phân tách chuỗi ngày tháng.

Ví dụ, bạn có thể kiểm tra ký tự phân tách (/ hoặc -) và độ dài của các phần để xác định xem đó là định dạng nào (dd/mm/yyyy, mm/dd/yyyy, hay yyyy-mm-dd), sau đó xây dựng chuỗi ngày tháng theo đúng định dạng mong muốn trước khi chuyển đổi.

Bạn có thể chia sẻ một vài ví dụ dữ liệu ngày tháng cụ thể mà bạn đang gặp phải không? Như vậy mình có thể đưa ra gợi ý chính xác hơn.

3

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký