Vấn đề là một ngày của Hoa Kỳ có thể phân tích cú pháp bằng Excel dưới dạng ngày Vương quốc Anh khi ngày nhỏ hơn 13. Khi điều này xảy ra, Excel sẽ chuyển đổi nó thành số nối tiếp (ngày) ở Vương quốc Anh.
Vì vậy, ngày 19 tháng 9 năm 2014 rõ ràng là ngày của Hoa Kỳ ngày 19 tháng 3. Tuy nhiên, ngày 05/03/2014 là không rõ ràng nên Excel phân tích định dạng ngày địa phương là ngày 5 tháng 3, thay vì ngày 3 tháng 5 của Hoa Kỳ. Bất kỳ công thức nào cũng phải kiểm tra xem Excel có lưu trữ Ngày của Hoa Kỳ như là một ngày ở Vương quốc Anh hay không. Ngày của Vương quốc Anh sẽ được lưu trữ trong Excel dưới dạng một số.
=IF(ISNUMBER(A2),DATE(TEXT(A2,"yyyy"),TEXT(A2,"dd"),TEXT(A2,"mm")),DATE(RIGHT(A2,4),LEFT(A2,FIND("/",A2)-1),MID(A2,FIND("/",A2)+1,2)))
(Đối với ngày ở ô A2 và PC là dd/mm/yy).
Nếu ISNUMBER
là đúng, ngày của Hoa Kỳ trông giống như ngày của Vương quốc Anh và Excel đã đăng ký nó làm số. Vì vậy, có thể định dạng ngày làm văn bản và quay lại một ngày nữa. Ngày ghi chú được chuyển đến tham số tháng của hàm DATE đầu tiên để thực hiện chuyển đổi. Nếu ISNUMBER
là sai, giá trị được lưu trữ dưới dạng chuỗi như Excel không chuyển đổi chuỗi ngày tháng> 12 tháng. Vì vậy, hãy sử dụng các hàm chuỗi để phân tách nó cho hàm DATE.
Bạn có thể lọc csv trước khi nhập vào Excel bằng Powershell trên Windows (sau ftp tới * nix server) ksh/bash trên * nix. –