Bỏ qua đến nội dung chính

Xử lý tình huống

Ngày lộn dd/mm với mm/dd hoặc ngày dạng chữ

Ngày tháng bị đảo (05/11 thành 11/05) hoặc canh trái, không lọc và sắp xếp theo ngày được? Cách kiểm tra ngày thật, ghép lại ngày từ chữ bằng DATE với LEFT, MID, RIGHT, và vì sao không nên dùng DATEVALUE cho ngày viết ngày/tháng/năm.

10 phút2 bài tậpKế toánHành chính – nhân sựVăn phòngBán hàng
Mục lục
  1. Cách làm nhanh
  2. Vấn đề bạn đang gặp
  3. Cách sửa từng bước
  4. Vì sao lỗi này xảy ra
  5. Trên Excel thật
  6. Luyện tập (2 bài tập)
  7. Câu hỏi thường gặp

Cách làm nhanh

  1. Kiểm tra ngày có thật không. Ngày thật canh phải, ngày dạng chữ canh trái. =ISNUMBER(B2) ra TRUE là ngày thật.
  2. Đọc kỹ thứ tự trong chữ. Xem ngày viết theo dd/mm/yyyy, mm/dd/yyyy hay yyyy-mm-dd, và trong cột có lẫn nhiều dạng không. Con số lớn hơn 12 chắc chắn là ngày, không phải tháng.
  3. Ghép ngày bằng DATE. Với chữ dd/mm/yyyy: =DATE(RIGHT(B2,4),MID(B2,4,2),LEFT(B2,2)), theo thứ tự năm, tháng, ngày.
  4. Định dạng ô kết quả là ngày. Chọn định dạng ngày (ví dụ dd/mm/yyyy). Ngày thật canh phải, lọc và sắp xếp theo thời gian đúng.
  5. Sửa ngày thật bị đảo. Nếu ô đã là ngày thật nhưng ngày và tháng đổi chỗ ở mọi dòng, ghép lại: =DATE(YEAR(B2),DAY(B2),MONTH(B2)).

Vấn đề bạn đang gặp

Bạn nhận bảng bán hàng từ một hệ thống cũ. Cột Ngày nhìn như ngày, nhưng bị canh trái, bấm sắp xếp hay lọc theo ngày thì ra thứ tự lạ, và =DATEVALUE(B2) lúc thì ra #VALUE!, lúc thì ra một ngày khác hẳn. Có thể bạn cũng từng thấy một ngày như 05/11/2026 biến thành ngày 11 tháng 5.

Cột Mã HĐ và cột Ngày: các ngày dd/mm/yyyy canh trái như chữ. Chú thích: 1: Ngày dạng chữ: canh trái. Chữ 08/02/2026 là ngày 8 tháng 2; 2: Chữ 13/02/2026 cho biết ngày đứng trước tháng, vì không có tháng 13.
Ngày dạng chữ canh trái. Chữ 13/02/2026 cho biết ngày đứng trước tháng, vì không có tháng 13.

Có hai nguyên nhân khác nhau, và cách sửa khác nhau. Một là ô là chữ: theo Microsoft, ngày dạng chữ canh trái thay vì canh phải. Hai là ô là ngày thật nhưng bị đọc ngược: Excel đọc ngày bạn gõ vào theo thứ tự ngày–tháng của mục Short date trong cài đặt vùng của máy, nên cùng một chữ có thể thành hai ngày khác nhau trên hai máy.

Cách sửa từng bước

Đổi cột Ngày (chữ dd/mm/yyyy) thành ngày thật

  1. Làm gì: Ở một ô trống, gõ =ISNUMBER(B2). FALSE nghĩa là B2 không phải ngày thật. Nhìn cả cột: ngày thật canh phải, chữ canh trái.

    Vì sao: Ngày thật là một con số được hiển thị theo định dạng ngày. Ngày dạng chữ chỉ là các ký tự nên canh trái và không sắp xếp đúng theo thời gian.

  2. Làm gì: Đọc vài ô để biết thứ tự trong chữ. Chữ có con số lớn hơn 12, ví dụ 13/02/2026, cho biết số đó là ngày, nên dạng là ngày/tháng/năm.

    Vì sao: Tháng chỉ từ 1 đến 12, nên một số lớn hơn 12 không thể là tháng. Chữ chỉ có số nhỏ như 08/02/2026 thì không đoán được, hãy dựa vào các ô khác trong cùng cột.

  3. Chỗ hay sai

    Làm gì: Ở ô kết quả, ghép ngày từ ba phần: =DATE(RIGHT(B2,4),MID(B2,4,2),LEFT(B2,2)). Sao chép xuống hết cột.

    Vì sao: Năm là 4 ký tự cuối, tháng là 2 ký tự bắt đầu từ ký tự thứ 4, ngày là 2 ký tự đầu. DATE nhận năm, rồi tháng, rồi ngày, nên không bao giờ đảo chúng.

  4. Làm gì: Chọn ô kết quả và đặt định dạng ngày, ví dụ dd/mm/yyyy.

    Vì sao: DATE trả về một con số thứ tự. Định dạng ngày cho con số đó hiện ra thành ngày.

  5. Làm gì: Kiểm tra: =ISNUMBER(H2) ra TRUE, ngày canh phải, rồi thử sắp xếp hoặc lọc theo cột mới.

    Vì sao: Chỉ ngày thật mới sắp xếp theo thời gian và lọc theo tháng, quý.

Tự hỏi mình

  • Chữ 08/02/2026 theo dd/mm/yyyy ra ngày nào khi dùng công thức trên? Còn khi viết sai thứ tự đối số của DATE thì ra ngày nào?
  • Vì sao con số lớn hơn 12 giúp bạn biết đang đọc ngày hay tháng?

Cột lẫn hai dạng chữ

Nếu cột gộp từ hai nguồn, ví dụ một nguồn viết dd/mm/yyyy và nguồn kia viết yyyy-mm-dd, hãy nhận ra dạng bằng dấu gạch ngang ở ký tự thứ 5 rồi ghép ngày theo từng dạng:

=IF(MID(B2,5,1)="-",DATE(LEFT(B2,4),MID(B2,6,2),RIGHT(B2,2)),DATE(RIGHT(B2,4),MID(B2,4,2),LEFT(B2,2)))
Cột Ngày có hai dạng chữ: dd/mm/yyyy và yyyy-mm-dd. Chú thích: 1: Dạng dd/mm/yyyy (ngày trước); 2: Dạng yyyy-mm-dd (năm trước).
Hai nguồn viết ngày khác dạng trong cùng một cột: cần một công thức nhận ra từng dạng.

Ngày thật nhưng bị đảo ngày và tháng

Nếu Excel đã đọc 05/11/2026 thành ngày 11 tháng 5 thì ô là ngày thật nhưng sai: ngày thật canh phải. Khi chắc chắn mọi ngày thật trong cột đều bị đảo, ghép lại bằng các hàm lấy từng phần của ngày thật, đổi chỗ ngày và tháng: =DATE(YEAR(B2),DAY(B2),MONTH(B2)). Với ô ngày thật, hãy dùng DAY, MONTH, YEAR, và chỉ dùng LEFT, MID, RIGHT cho ô chữ.

Hiển thị lại thành chữ

Khi cần một ô chữ có dạng ngày cố định, ví dụ để nối vào câu, dùng =TEXT(H2,"dd/mm/yyyy"). Kết quả là chữ, không còn là ngày để tính. Hãy giữ ngày thật ở một cột và đặt công thức TEXT ở cột khác.

Vì sao lỗi này xảy ra

Ngày thật trong Excel là một con số thứ tự, và định dạng ô quyết định cách con số đó hiện ra thành ngày. Ngày dạng chữ chỉ là các ký tự, nên Excel không sắp xếp hay lọc nó theo thời gian.

Việc đọc ngày gõ vào còn phụ thuộc cài đặt vùng của máy, như đã nói ở trên, và DATEVALUE cũng có thể ra kết quả khác nhau theo cài đặt ngày của máy (Microsoft ghi rõ), nên cùng một chữ có thể ra hai ngày khác nhau ở hai máy. Cách chắc chắn là tự lấy năm, tháng, ngày ra khỏi chữ rồi giao cho DATE: bạn quyết định phần nào là ngày, phần nào là tháng, và kết quả không đổi theo máy.

  • Ngày ra sai: tháng và ngày đổi chỗ so với chữ gốc.

    Nguyên nhân
    Đối số của DATE đặt sai thứ tự (DATE nhận năm, rồi tháng, rồi ngày), hoặc chữ gốc là mm/dd/yyyy mà bạn đọc như dd/mm/yyyy.
    Cách sửa
    Kiểm tra thứ tự trong chữ, rồi đặt MID và LEFT đúng chỗ: với dd/mm/yyyy, tháng là MID(B2,4,2) và ngày là LEFT(B2,2).
  • DATEVALUE ra #VALUE! hoặc ra một ngày khác hẳn.

    Nguyên nhân
    DATEVALUE đọc chữ theo cài đặt ngày của máy, và Microsoft nói cài đặt đó có thể làm kết quả khác nhau.
    Cách sửa
    Ghép ngày bằng DATE từ các phần của chữ, như ở trên.
  • Ô kết quả hiện một số lớn, ví dụ 46331, thay vì ngày.

    Nguyên nhân
    Ô chưa có định dạng ngày. DATE trả về số thứ tự, và Microsoft nhắc cần đổi định dạng ô để hiển thị đúng ngày.
    Cách sửa
    Chọn ô và đặt định dạng ngày, ví dụ dd/mm/yyyy.
  • LEFT, MID, RIGHT cho kết quả lạ khi dùng trên ngày thật.

    Nguyên nhân
    Ba hàm này cắt ký tự của chữ. Ngày thật là con số thứ tự, và Microsoft dùng DAY, MONTH, YEAR để lấy từng phần của ngày thật.
    Cách sửa
    Với ô ngày thật, dùng =DAY(B2), =MONTH(B2), =YEAR(B2). Chỉ dùng LEFT, MID, RIGHT trên ô chữ.

Đọc xong, giờ thử

Luyện tập ngay (2 bài tập)

Làm trực tiếp trên lưới trong trình duyệt. Mỗi lần bấm chấm bài, DeskLab kiểm tra kết quả và gợi ý nếu bạn chưa làm đúng.

Bắt đầu luyện tập

Chấm tự động ngay trên máy bạn. Không cần đăng nhập. Tiến độ lưu trên trình duyệt này.

Ô B2 canh trái và =ISNUMBER(B2) ra FALSE. B2 là gì?

Chữ 08/02/2026 viết theo dd/mm/yyyy, nghĩa là ngày 8 tháng 2. Công thức nào ghép đúng ngày đó?

Vì sao nên tránh DATEVALUE cho chữ viết ngày/tháng/năm?

Chữ gốc là 05/11/2026 (5 tháng 11) nhưng ô B2 là ngày thật 11 tháng 5, và mọi ngày thật trong cột đều bị đảo. Công thức nào sửa đúng?

Trên Excel thật

  • Ngày dạng chữ trong bài tập: dữ liệu của bài tập cố ý để ngày dạng chữ, để bạn tập tách chữ. Thực tế bạn nên sửa ngay ở nguồn nếu có thể.
  • Tam giác xanh trên lưới: lưới DeskLab vẽ tam giác xanh ở góc các ô chữ đọc được thành ngày, như 08/02/2026 ở hình đầu trang, nhưng không vẽ ở 13/02/2026 vì chữ này không đọc được thành ngày theo thứ tự tháng trước ngày. Đừng dựa vào tam giác để biết cột đã đúng.
  • Gõ ngày vào lưới: lưới DeskLab đọc 05/11/2026 bạn gõ là ngày 5 tháng 11 (ngày trước tháng). Excel thật đọc ngày bạn gõ vào theo thứ tự trong cài đặt vùng của máy bạn, như đã nói ở trên.
  • DATEVALUE: trên lưới DeskLab, =DATEVALUE("08/02/2026") ra ngày 2 tháng 8 (đọc tháng trước ngày) và 13/02/2026 báo lỗi. Excel thật có thể ra kết quả khác tùy cài đặt ngày của máy, như Microsoft ghi trong câu hỏi trên.
  • LEFT, MID, RIGHT trên ngày thật: trên lưới DeskLab, ba hàm này đọc ngày đang hiển thị trên màn hình. Đừng dựa vào điều đó: hãy dùng DAY, MONTH, YEAR cho ô ngày thật, như Microsoft làm trong ví dụ của hàm DATE.

Câu hỏi thường gặp

Sao không dùng DATEVALUE cho nhanh?

Vì DATEVALUE đọc chữ theo cài đặt ngày của máy. Chính Microsoft ghi rằng cài đặt ngày của máy có thể làm kết quả của DATEVALUE khác nhau. Chữ 05/11/2026 có thể ra ngày 5 tháng 11 ở máy này và ngày 11 tháng 5 ở máy khác. DATE ghép từ ba phần bạn tự lấy ra (năm, tháng, ngày) nên kết quả giống nhau trên mọi máy.

Ngày viết năm trước, như 2026-11-05, xử lý thế nào?

Ghép bằng DATE với LEFT, MID, RIGHT đúng vị trí của dạng đó: =DATE(LEFT(B2,4),MID(B2,6,2),RIGHT(B2,2)). Microsoft hướng dẫn đúng cách này cho ngày dạng chữ YYYYMMDD. Nếu một cột lẫn hai dạng, dùng IF để chọn công thức theo dạng của từng dòng, ví dụ nhận ra dạng yyyy-mm-dd qua dấu gạch ngang ở ký tự thứ 5.