Thay Thế Hàm DATEDIF Trong Excel: Công Thức Đáng Tin Cậy Cho Mọi Trường Hợp
Chia sẻ
"DATEDIF là hàm ẩn, có bug, không được Microsoft hỗ trợ. Bài viết hướng dẫn 6 công thức thay thế đáng tin cậy cho mọi unit Y, M, D, YM, MD, YD — kèm bảng tổng hợp và ứng dụng thực tế."
Hàm DATEDIF không có trong danh sách hàm chính thức của Excel, dễ gây lỗi, và Microsoft không khuyến khích dùng. Bài viết hướng dẫn cách thay thế DATEDIF bằng các công thức đáng tin cậy hơn.
DATEDIF Là Gì? Tại Sao Nên Thay Thế?
DATEDIF là hàm tính khoảng cách giữa 2 ngày theo năm, tháng hoặc ngày. Cú pháp: =DATEDIF(start, end, unit) với unit là "Y", "M", "D", "YM", "MD", "YD".
3 lý do nên thay thế DATEDIF:
Không có trong IntelliSense: DATEDIF không xuất hiện khi bạn gõ tên hàm, không có tooltip hướng dẫn. Đây là hàm "ẩn" được giữ lại từ Lotus 1-2-3.
Bug đã biết: Unit "MD" (số ngày còn lại sau khi trừ tháng) cho kết quả sai trong nhiều trường hợp, đặc biệt khi ngày bắt đầu lớn hơn ngày kết thúc trong tháng.
Microsoft không hỗ trợ: Trang hỗ trợ chính thức khuyến cáo không nên dùng DATEDIF và gợi ý các công thức thay thế.
Thay Thế DATEDIF "Y" — Tính Số Năm
DATEDIF(start, end, "Y") trả về số năm đầy đủ giữa 2 ngày. Thay thế bằng:
=YEAR(end) - YEAR(start) - (DATE(YEAR(end), MONTH(start), DAY(start)) > end)Giải thích: Tính hiệu số năm, rồi trừ 1 nếu ngày sinh nhật trong năm end chưa đến. Phần DATE(YEAR(end), MONTH(start), DAY(start)) > end trả TRUE (=1) nếu ngày kỷ niệm chưa qua, đảm bảo chỉ đếm năm đầy đủ.
Ví Dụ: Tính Tuổi
Sinh ngày 15/03/1990, hôm nay 10/01/2025:
=YEAR(TODAY()) - YEAR("15/03/1990") - (DATE(YEAR(TODAY()), 3, 15) > TODAY())
→ 2025 - 1990 - FALSE = 34 tuổi ✅Thay Thế DATEDIF "M" — Tính Số Tháng
DATEDIF(start, end, "M") trả về số tháng đầy đủ. Thay thế bằng:
=(YEAR(end) - YEAR(start)) * 12 + MONTH(end) - MONTH(start) - (DAY(end) < DAY(start))Giải thích: Tính tổng số tháng từ hiệu năm × 12 + hiệu tháng, rồi trừ 1 nếu ngày trong tháng end nhỏ hơn ngày trong tháng start (tháng chưa đầy đủ).
Thay Thế DATEDIF "D" — Tính Số Ngày
Đây là trường hợp đơn giản nhất — không cần DATEDIF:
=end - startExcel lưu ngày dưới dạng số serial, nên phép trừ trực tiếp cho kết quả chính xác.
Thay Thế DATEDIF "YM" — Số Tháng Còn Lại
DATEDIF(start, end, "YM") trả về số tháng sau khi đã trừ năm. Thay thế:
=MOD((YEAR(end) - YEAR(start)) * 12 + MONTH(end) - MONTH(start) - (DAY(end) < DAY(start)), 12)Giải thích: Dùng MOD(..., 12) để lấy phần dư sau khi chia cho 12, tức số tháng vượt quá năm đầy đủ.
Thay Thế DATEDIF "MD" — Số Ngày Còn Lại (Fix Bug)
Đây là unit có bug nổi tiếng nhất của DATEDIF. Thay thế bằng:
=end - DATE(YEAR(end), MONTH(end) - (DAY(end) < DAY(start)), DAY(start))Giải thích: Tạo ngày tham chiếu bằng cách lấy ngày start ghép vào tháng/năm gần nhất trước end, rồi trừ để ra số ngày dư. Nếu DAY(end) < DAY(start), lùi 1 tháng.
Thay Thế DATEDIF "YD" — Số Ngày Còn Lại Trong Năm
DATEDIF(start, end, "YD") đếm số ngày sau khi trừ năm đầy đủ. Thay thế:
=end - DATE(YEAR(end) - (DATE(YEAR(end), MONTH(start), DAY(start)) > end), MONTH(start), DAY(start))Giải thích: Xác định ngày kỷ niệm gần nhất trước end, rồi trừ để ra số ngày.
Bảng Tổng Hợp Công Thức Thay Thế
Giả sử start ở A2, end ở B2:
Unit | Ý nghĩa | Công thức thay thế |
|---|---|---|
| Năm đầy đủ |
|
| Tháng đầy đủ |
|
| Tổng số ngày |
|
| Tháng dư |
|
| Ngày dư |
|
| Ngày dư trong năm |
|
Ứng Dụng Thực Tế: Hiển Thị Tuổi Dạng "X Năm Y Tháng Z Ngày"
Kết hợp 3 công thức thay thế Y, YM, MD để hiển thị tuổi chi tiết:
=YEAR(B2)-YEAR(A2)-(DATE(YEAR(B2),MONTH(A2),DAY(A2))>B2) & " năm "
& MOD((YEAR(B2)-YEAR(A2))*12+MONTH(B2)-MONTH(A2)-(DAY(B2)<DAY(A2)),12) & " tháng "
& B2-DATE(YEAR(B2),MONTH(B2)-(DAY(B2)<DAY(A2)),DAY(A2)) & " ngày"Kết quả: "34 năm 10 tháng 26 ngày" — chính xác và đáng tin cậy hơn DATEDIF.
Tổng Kết
DATEDIF là hàm "ẩn" từ Lotus 1-2-3, không có IntelliSense, có bug trong unit "MD"
Mỗi unit đều có công thức thay thế đáng tin cậy hơn sử dụng YEAR, MONTH, DAY, DATE, MOD
Nếu đang dùng DATEDIF trong workbook quan trọng, hãy chuyển sang công thức thay thế để tránh rủi ro
Phép trừ trực tiếp (end - start) luôn là cách tốt nhất để tính tổng số ngày
Bình luận
Đăng nhập để tham gia bình luận
Đăng nhậpNhận bài viết mới nhất
Đăng ký để nhận thông báo khi có bài viết mới. Không spam, chỉ kiến thức chất lượng.
Bài viết liên quan
Khám phá thêm các bài viết cùng chủ đề
