Chào mọi người,
Mình thường xuyên phải làm việc với các file Excel mà dữ liệu ngày tháng nhập vào rất lộn xộn. Có lúc thì thiếu năm, có lúc thì sai định dạng (ví dụ: 31/12/2023 hoặc 12-31-2023). Việc xử lý thủ công rất mất thời gian và dễ sai sót. Gần đây, mình có tìm hiểu và áp dụng Power Query để giải quyết vấn đề này khá hiệu quả, nên muốn chia sẻ lại cho anh em nào đang gặp tình trạng tương tự.
Tình huống:
- Dữ liệu ngày tháng có thể ở dạng
dd/mm/yyyy,mm/dd/yyyy, hoặc thậm chí chỉ códd/mm(thiếu năm). - Năm có thể là 2 số (
23thay vì2023). - Cần chuẩn hóa về một định dạng thống nhất và đảm bảo tính chính xác.
Cách làm với Power Query:
- Load dữ liệu vào Power Query: Chọn vùng dữ liệu, vào tab Data -> From Table/Range.
- Kiểm tra kiểu dữ liệu: Power Query thường tự nhận diện kiểu ngày tháng, nhưng đôi khi nó nhận sai. Nếu cột ngày tháng chưa đúng kiểu Date, hãy click vào biểu tượng bên trái tên cột và chọn Date.
- Xử lý định dạng không nhất quán: Nếu có nhiều định dạng khác nhau, cách đơn giản là Replace Values. Ví dụ, thay thế
-bằng/. - Xử lý thiếu năm: Đây là phần quan trọng. Nếu cột ngày tháng của bạn bị thiếu năm, bạn có thể dùng Add Column -> Custom Column với công thức tương tự như sau (giả sử cột ngày tháng là
[DateColumn]và bạn muốn mặc định năm là 2023 nếu thiếu):if Date.Year([DateColumn]) = 1899 // Hoặc một giá trị mặc định khác mà PQ hay nhận sai cho ngày thiếu nămthen Date.AddYears([DateColumn], 2023 - Date.Year(DateTime.LocalNow())) // Hoặc năm cụ thể bạn muốnelse [DateColumn] - Chuẩn hóa năm (nếu cần): Nếu năm chỉ có 2 chữ số (ví dụ:
23), bạn có thể cần một bước xử lý khác tùy thuộc vào logic bạn muốn (ví dụ: nếu năm nhỏ hơn 30 thì cộng 2000, nếu lớn hơn thì trừ 100, v.v.). Tuy nhiên, thường Power Query sẽ tự xử lý tốt nếu định dạng ban đầu rõ ràng. - Đóng và Load: Sau khi xử lý xong, vào Home -> Close & Load To... để đưa dữ liệu về Excel.
Mẹo nhỏ là hãy luôn kiểm tra kỹ các bước Applied Steps trong Power Query để đảm bảo mọi thứ diễn ra đúng như mong đợi.
Hy vọng chia sẻ này hữu ích với mọi người!