Giá trị ngày tháng trong Excel bị sai lệch 16 ngày đối với một số người dùng.
Chúng tôi đã gặp một vài trường hợp hai người dùng khác nhau tải xuống cùng một bảng tính, và đối với người dùng này, các giá trị ngày hiển thị đúng ngày, nhưng đối với người dùng kia, các giá trị ngày lại hiển thị trước ngày đúng 16 ngày. Ngày tháng là các giá trị tĩnh trong một ô có định dạng [$-en-US]m/d/yyyy. Không có công thức nào được sử dụng trên các ô này, và đây không phải là sổ làm việc được chia sẻ.
Đa số người dùng gặp phải vấn đề này đều ở Ấn Độ và đã thiết lập vùng ngôn ngữ Windows thành tiếng Anh (Ấn Độ). Tuy nhiên, chúng tôi cũng nhận được báo cáo từ một người dùng ở Mỹ về cùng một sự cố.
Tôi đã thử thay đổi cài đặt vùng miền của Windows trên máy tính để bàn sang tiếng Anh (Ấn Độ), nhưng không thể tái hiện lỗi trên máy của mình. Tôi đã thử thay đổi ngôn ngữ trong Excel sang tiếng Anh (Ấn Độ), tôi đã thử cả phiên bản trực tuyến (trên Chrome, Firefox, Edge và Internet Explorer) và phiên bản cục bộ của Excel, tôi đã thử thay đổi tùy chọn ngôn ngữ trong Tùy chọn Excel, tôi đã thử thay đổi Excel để sử dụng hệ thống ngày tháng năm 1904, nhưng tôi vẫn không thể tái hiện lỗi trên máy của mình.
Tôi rất mong nhận được bất kỳ gợi ý nào về cách khắc phục vấn đề này.
Trả lời:
Tôi có thể tái hiện lỗi này với các phiên bản Excel khác nhau trên các máy tính khác nhau:
A1: chứa ngày tháng thực tế hôm nay, 8 tháng 11 năm 2020
B1: =A1
B2: =A1
Và tôi đã chạy macro này để áp dụng định dạng số.
Sub Test()
Range("B1").NumberFormat = "[$-en-US]m/d/yyyy"
Debug.Print Range("B1").NumberFormat
End Sub
Khi tôi nhìn vào cửa sổ ngay lập tức, tôi có thể thấy định dạng số này.
[+-F6EFC]m/d/yyyy]
Vấn đề rất rõ ràng. Mã hex của F6EFC tương ứng với mã thập phân 1011452 và mã LCID như vậy không tồn tại.
Nếu tôi sửa giá trị ngôn ngữ thành 409 hex (giá trị đúng cho "en-us") thì vấn đề sẽ biến mất:
[+-409] tháng/ngày/năm
Định dạng này được áp dụng tại B2. Đây là tệp để xem vấn đề:
https://www.dropbox.com/s/a6dtc40kjoc24ao/5284eccd-fd79-4244-8065-e85704049e9e.xlsx?dl=1
Sau một vài lần thử nghiệm, tôi đã có thể khoanh vùng vấn đề hơn nữa. Lỗi này chỉ xảy ra khi định dạng tiếng Anh được áp dụng trên các máy có cài đặt ngôn ngữ KHÔNG phải là tiếng Anh.
Tóm lại, giải pháp là áp dụng định dạng số.
[+-409] tháng/ngày/năm
thay vì
[$-en-US]m/d/yyyy
Andreas.
Comments
Post a Comment