Xin bác pmt0412 cho hỏi tí:
1- Bác sắp xếp year-day-month là có chủ ý, hay nhầm? trong khi những dòng tương ứng với cột B dạng text có kết quả là year-month-day.
2- Nếu dùng =INT(VALUE(LEFT(B2,10))) thì gọn hơn và format dạng ngày giữa các dòng luôn giống nhau, chuẩn không cần chỉnh
Theo hình, tôi dùng công thức IsNumber để kiểm tra, nếu ngày đúng chuẩn thì true, khác chuẩn thì False.
Vậy text là False, nhưng text lại nhìn thấy là dd/mm/yyyy
Vậy bạn giải thích tại sao dd/mm/yyyy mà lại không được xem là ngày đúng chuẩn?
Tôi thì giải thích vầy:
1. Dữ liệu ban đầu là ngày toàn bộ, và định dạng dd/mm/yyyy (và từ nguồn không phải Excel)
2. Khi chép vào máy, định dạng system của máy là mm/dd/yyyy. Vì vậy:
- dd của dữ liệu bị máy xem là mm
- dd nào lớn hơn 12, bị cho là text (IsNumber = False)
- dd nào nhỏ hơn hoặc bằng 12, thì xem là mm hợp lệ, và dữ liệu được xem là ngày (IsNumber = True)
Tóm lại, cái ta thấy hiển thị không phải là cái bản chất.
29/12/2008 tưởng là ngày, nhưng bị đánh giá là text
08/10/2008, tưởng là 8 tháng 10, thực sự là 10 tháng 8 và bị đánh giá sai.
Vậy ta trả 08/10/2008 về giá trị thực của nó bằng cách dổi mm thành dd, dd thành mm là đúng chứ?
Còn 29/12, chỉ cần nhân 1 (và lấy Int) là thành ngày tháng thôi, đúng không?
Do đó, nếu không biết nguyên nhân gốc rễ của vấn đề, ta sẽ giải quyết không đúng hương.