Blog Hướng dẫn
Cách tính tuổi trong Excel: công thức DATEDIF đúng, kiểm chứng trên 1.113 ngày sinh
Trả lời nhanh
Công thức tính tuổi trong Excel: =DATEDIF(A2;TODAY();"Y"), với A2 là ô ngày sinh. Hàm trả số năm đã tròn nên tuổi tăng đúng ngày sinh nhật; máy dùng dấu phẩy thì viết =DATEDIF(A2,TODAY(),"Y"). Tránh phép trừ hai số năm và INT(YEARFRAC(…)): cả hai sai vào những ngày sát sinh nhật.
Bài này không chỉ chép lại công thức. Chúng tôi đã cho Microsoft Excel (bản 16.113.2 cho Mac) tính 1.113 cặp ngày sinh và ngày tính tuổi, rồi đối chiếu với bộ tính của tinhtuoi.com. Kết quả cho thấy công thức nào đúng, công thức nào sai, và sai vào ngày nào.
DATEDIF không sai lần nào trong 1.113 phép thử
Dùng DATEDIF với đơn vị "Y". Hàm đếm số năm đã tròn giữa hai ngày, tức tăng tuổi đúng vào ngày sinh nhật. Trong 1.113 cặp ngày thử nghiệm, hàm trả đúng số năm tròn ở cả 1.113 cặp (riêng người sinh 29/2 có quy ước riêng, xem mục bên dưới).
| A — Ngày sinh | B — Tính đến | C — Công thức | Kết quả | |
|---|---|---|---|---|
| 2 | 15/10/2000 | 14/10/2026 | =DATEDIF(A2;B2;”Y”) | 25 |
| 3 | 15/10/2000 | 15/10/2026 | =DATEDIF(A3;B3;”Y”) | 26 |
Muốn tuổi luôn tính đến hôm nay thì thay ô B bằng TODAY(). Hàm này tự đổi mỗi khi bảng tính được tính lại, nên mở file vào ngày khác sẽ thấy tuổi khác.
Ba điều kiện để công thức chạy đúng:
- Ô ngày sinh phải là giá trị ngày, không phải chữ. Kiểm tra bằng
=ISNUMBER(A2): kết quả TRUE là ngày hợp lệ. - Ngày sinh không được lớn hơn ngày tính, nếu không Excel báo
#NUM!. DATEDIFlà hàm Microsoft giữ lại để tương thích với Lotus 1-2-3. Ở một số phiên bản, hàm không xuất hiện trong danh sách gợi ý; cứ gõ đủ tên là chạy.
Vì sao không nên lấy năm nay trừ năm sinh?
Vì phép trừ YEAR(B2)-YEAR(A2) bỏ qua ngày và tháng sinh. Người chưa tới sinh nhật trong năm vẫn bị cộng thêm một tuổi. Trong bộ thử, phép trừ này sai ở 549/1.113 cặp, và toàn bộ đều là những ngày chưa tới sinh nhật. Với người sinh 15/10/2000, phép trừ cho ra 26 tuổi ngay từ ngày 1/1/2026, trong khi người đó chỉ tròn 26 vào ngày 15/10/2026.
Phép trừ năm chỉ đúng khi câu hỏi là “năm nay người này sẽ tròn bao nhiêu tuổi”. Đó cũng là cách đọc của bảng tra tuổi theo năm sinh.
YEARFRAC sai vào đúng ngày sinh nhật
Không nên dùng nếu cần tuổi tròn. Nhiều bài hướng dẫn =INT(YEARFRAC(A2;B2;1)), nhưng hàm này tính số năm dạng thập phân theo độ dài trung bình của các năm, không đếm ngày sinh nhật. Kết quả trên toàn bộ 1.113 cặp ngày:
| Công thức | Số cặp sai | Sai vào lúc nào |
|---|---|---|
DATEDIF(A2;B2;"Y") | 0 | Không sai lần nào |
YEAR(B2)-YEAR(A2) | 549 | Mọi ngày trong năm trước sinh nhật (thừa 1 tuổi) |
INT(YEARFRAC(A2;B2;1)) | 112 | Đúng ngày sinh nhật (thiếu 1 tuổi); 104/112 ca là người sinh năm nhuận |
INT(YEARFRAC(A2;B2)) | 15 | Ngày trước sinh nhật của người sinh ngày 31, ngày 1 hoặc 29/2 (thừa 1 tuổi) |
Lỗi của YEARFRAC mặc định (không ghi đối số thứ ba) đến từ quy ước kế toán 30/360. Quy ước này coi ngày 30 và ngày 31 như nhau. Vì thế người sinh 31/5 được báo đủ tuổi từ ngày 30/5, còn người sinh 1/9 được báo đủ tuổi từ ngày 31/8.
YEARFRAC chỉ hợp khi cần số năm có phần lẻ theo quy ước của Excel, ví dụ 25,9 năm. Khi đó dùng =YEARFRAC(A2;B2;1) (quy ước Actual/Actual, theo số ngày thực tế). Cách cơ quan, doanh nghiệp tính thâm niên có thể theo quy định riêng.
Tính tuổi ra năm, tháng, ngày trong Excel thế nào?
Dùng một cột phụ đếm tổng số tháng tròn, rồi tách ra năm, tháng và số ngày lẻ bằng EDATE. Cách này không bao giờ ra số âm và khớp bộ tính của tinhtuoi.com ở cả 1.113/1.113 cặp ngày.
C2 (tổng số tháng tròn, quy ước: sinh ngày 29–31 thì tròn tháng vào ngày cuối của tháng ngắn hơn):
=DATEDIF(A2;B2;"M")+(EDATE(A2;DATEDIF(A2;B2;"M")+1)<=B2)
D2 (tuổi chi tiết):
=INT(C2/12)&" năm "&MOD(C2;12)&" tháng "&(B2-EDATE(A2;C2))&" ngày"
Phần (EDATE(…)<=B2) trả về TRUE hoặc FALSE, Excel quy thành 1 hoặc 0. Nó bù một tháng cho người sinh ngày 29, 30 hoặc 31 khi tháng đang xét ngắn hơn. Nhờ vậy người sinh 31/1 được tính tròn tháng vào ngày 28/2, theo đúng cách đếm của công cụ tính tuổi theo ngày tháng năm sinh.
Vì sao không dùng đơn vị “MD” như nhiều bài hướng dẫn?
Công thức phổ biến trên mạng ghép DATEDIF với ba đơn vị "Y", "YM", "MD". Chính Microsoft khuyến cáo không dùng "MD" vì có thể cho kết quả sai. Bộ thử tái hiện đúng lỗi đó:
| Cách | Kết quả Excel trả về | |
|---|---|---|
| 1 | “Y” + “YM” + “MD” | 26 năm 1 tháng −2 ngày |
| 2 | Cột phụ + EDATE | 26 năm 1 tháng 1 ngày |
Trong 1.113 cặp, đơn vị "MD" cho kết quả khác cách dùng EDATE ở 12 cặp, trong đó có một lần ra số âm như trên.

Người sinh ngày 29/2
Ở năm không nhuận, DATEDIF coi người sinh 29/2 tròn tuổi vào ngày 1/3. tinhtuoi.com quy ước lấy ngày 28/2; các hệ thống khác có thể dùng quy ước khác. Hai cách chỉ lệch nhau đúng một ngày mỗi năm thường:
| Tính đến | DATEDIF "Y" | Cột phụ + EDATE |
|---|---|---|
| 28/2/2026 | 25 | 26 |
| 1/3/2026 | 26 | 26 |
Trong tính toán thông thường, dùng cách nào cũng được miễn nêu rõ quy ước; thủ tục pháp lý thì theo quy định của cơ quan có thẩm quyền. Điều cần tránh là trộn hai cách trong cùng một bảng. Muốn tuổi tròn khớp với cột tuổi chi tiết ở trên thì dùng =INT(C2/12) thay cho DATEDIF(…;"Y").

Chỉ có năm sinh thì tính tuổi trong Excel ra sao?
Chỉ tính được khoảng tuổi, không ra một con số chính xác. Khi không biết ngày sinh, không ai biết người đó đã qua sinh nhật trong năm hay chưa. =YEAR(TODAY())-A2 cho số tuổi người đó sẽ tròn trong năm; tuổi thật hiện tại bằng con số đó hoặc ít hơn 1. Công thức hiển thị cả khoảng:
=(YEAR(TODAY())-A2-1)&"–"&(YEAR(TODAY())-A2)&" tuổi"
Với A2 là 2000 và năm hiện tại là 2026, kết quả là “25–26 tuổi”. Đây cũng là cách trang sinh năm 2000 trả lời câu hỏi “bao nhiêu tuổi” khi chưa có ngày sinh.
Dùng dấu phẩy hay dấu chấm phẩy trong công thức?
Tùy thiết lập vùng (Region) của hệ điều hành, không tùy phiên bản Excel. Máy dùng dấu phẩy làm dấu thập phân, như định dạng số kiểu Việt Nam “1.234,5”, thường ngăn đối số bằng dấu chấm phẩy. Máy theo định dạng Mỹ “1,234.5” thì dùng dấu phẩy. Gõ sai kiểu, Excel sẽ từ chối công thức.
| Định dạng số của máy | Cách viết |
|---|---|
| 1.234,5 (Việt Nam, châu Âu) | =DATEDIF(A2;TODAY();"Y") |
| 1,234.5 (Mỹ, Anh) | =DATEDIF(A2,TODAY(),"Y") |
Khi sao chép công thức từ mạng, đổi toàn bộ dấu phân cách theo một kiểu, không để lẫn. File Excel lưu công thức theo một chuẩn chung, nên mở file mẫu bên dưới trên máy nào cũng hiển thị đúng dấu của máy đó.
Các lỗi thường gặp khi tính tuổi trong Excel
| Hiện tượng | Nguyên nhân | Cách sửa |
|---|---|---|
#VALUE! | Ngày sinh là chữ mà Excel không hiểu theo định dạng ngày của máy, ví dụ gõ 15/10/2000 trên máy định dạng tháng/ngày | Kiểm tra bằng ISNUMBER; nhập lại bằng =DATE(2000;10;15) |
#NUM! | Ngày sinh lớn hơn ngày tính | Kiểm tra lại năm sinh, thường là gõ nhầm năm |
| Tuổi lớn bất thường ở dòng trống | Ô ngày sinh trống được Excel coi là số 0 | Bọc công thức: =IF(A2="";"";DATEDIF(A2;B2;"Y")); bắt cả ngày sinh lớn hơn ngày tính: =IF(OR(A2="";A2>B2);"";DATEDIF(A2;B2;"Y")) |
| Excel từ chối công thức | Sai dấu phân cách; ngoặc kép cong “ ” khi chép từ trang web cũng làm công thức báo lỗi | Gõ lại dấu phân cách và ngoặc kép thẳng “Y” |
Tải file Excel tính tuổi mẫu
File mẫu có sẵn các công thức trong bài, đã bọc xử lý ô trống:
- Sheet “Tính tuổi”: nhập ngày sinh, file trả tuổi tròn và tuổi chi tiết năm–tháng–ngày, tính đến hôm nay hoặc một ngày bạn chọn.
- Sheet “Chỉ có năm sinh”: trả khoảng tuổi.
- Sheet “Ghi chú”: quy ước 29/2 và cuối tháng.
Dùng trong Google Sheets
Công thức dùng được nguyên trong Google Sheets. Sheets hỗ trợ DATEDIF, EDATE, TODAY với cùng cú pháp. Dấu phân cách đi theo cài đặt vùng (locale) của từng bảng tính, trong mục Tệp → Cài đặt. Bảng đặt ở vùng dùng dấu phẩy thập phân, như Việt Nam, sẽ ngăn đối số bằng dấu chấm phẩy.
Câu hỏi thường gặp
Có cách tính tuổi trong Excel không cần DATEDIF?
Có: =YEAR(B2)-YEAR(A2)-(DATE(YEAR(B2);MONTH(A2);DAY(A2))>B2). Phần cuối trừ 1 khi chưa tới sinh nhật. Với người sinh 29/2, DATE chuyển sang 1/3 ở năm thường nên cho kết quả giống DATEDIF.
Nguồn tham khảo
- Microsoft Support: “Hàm DATEDIF”, “Hàm YEARFRAC”, “Tính chênh lệch giữa hai ngày” (cảnh báo về đơn vị “MD”).
- Google Docs Editors Help: “DATEDIF”.
- Kiểm thử của tinhtuoi.com ngày 1/10/2026 trên Microsoft Excel (Microsoft 365) cho Mac, phiên bản 16.113.2: 1.113 cặp ngày, gồm 13 ca biên (29/2, cuối tháng), 400 ngày sinh ngẫu nhiên 1940–2015 thử ở ngày trước và đúng sinh nhật, cùng 300 cặp ngẫu nhiên. Các hàm DATEDIF, YEARFRAC, EDATE được Excel tính trực tiếp. Công thức cột phụ ghép từ chính các hàm đó và được đối chiếu với bộ tính tuổi của tinhtuoi.com qua bản mô phỏng DATEDIF/EDATE, bản mô phỏng này khớp Excel ở 1.113/1.113 cặp.