=DATEDIF(B2,TODAY(),"Y") trả về số tuổi tròn năm của người sinh vào ngày trong B2. DATEDIF đếm số năm tròn giữa hai ngày, còn TODAY() cung cấp ngày thứ hai, nên tuổi tăng thêm một vào mỗi dịp sinh nhật.
| A | B | C | |
|---|---|---|---|
| 1 | Name | Born | Age |
| 2 | Ana | 1990-05-14 | 36 |
| 3 | Ben | 1985-11-30 | 40 |
| 4 | Chloe | 2001-02-28 | 25 |
| 5 | Dan | 1978-10-10 | 47 |
| 6 | Eva | 2010-07-04 | 16 |
Tuổi trong cột C được tính dựa trên ngày hôm nay, nên chúng thay đổi theo thời gian trong năm. Đổi một ngày sinh trong cột B thì tuổi bên cạnh cũng đổi theo. Công thức có ba đối số: ngày bắt đầu (ngày sinh), ngày kết thúc (hôm nay) và đơn vị, "Y" nghĩa là số năm tròn.
Tuổi tại một ngày cụ thể
Để lấy tuổi vào một ngày cố định, như ngày khai giảng năm học hay ngày ký hợp đồng, hãy nhập ngày đó vào một ô và dùng ô này thay cho TODAY(). Dấu $ trong $F$2 giữ tham chiếu ở F2 khi công thức được điền xuống.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Name | Born | Age | As of | ||
| 2 | Ana | 1990-05-14 | 36 | 2026-10-01 | ||
| 3 | Ben | 1985-11-30 | 40 | |||
| 4 | Chloe | 2001-02-28 | 25 | |||
| 5 | Dan | 1978-10-10 | 47 | |||
| 6 | Eva | 2010-07-04 | 16 |
Vào ngày 2026-10-01, Ana 36 tuổi còn Dan 47 tuổi: sinh nhật ngày 10 tháng 10 của anh ấy chưa tới. Đổi F2 thành 2026-10-10 là Dan tròn 48 tuổi. Cách này cũng cho cùng một kết quả mỗi lần mở tệp, điều quan trọng khi số tuổi được đưa vào báo cáo. Xem trang DATEDIF để biết các đơn vị khác.
Tuổi theo năm, tháng và ngày
DATEDIF có các đơn vị cho phần còn dư sau số năm tròn: "YM" đếm số tháng sau năm tròn cuối cùng, còn "MD" đếm số ngày sau tháng tròn cuối cùng. Nối ba phần lại bằng & để viết số tuổi dưới dạng văn bản.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Born | Years | Months | Days | Age | As of |
| 2 | 1990-05-14 | 36 | 4 | 17 | 36 years, 4 months, 17 days | 2026-10-01 |
| 3 | 1978-10-10 | 47 | 11 | 21 | 47 years, 11 months, 21 days |
Từ 1990-05-14 đến 2026-10-01 là 36 năm, 4 tháng và 17 ngày. Microsoft khuyên không nên dùng đơn vị "MD" vì trong một số trường hợp nó có thể trả về số ngày âm hoặc sai, chẳng hạn khi ngày sinh rơi vào ngày 31. Hãy kiểm tra lại số ngày khi ngày sinh rơi vào khoảng từ ngày 29 đến ngày 31.
Tính tuổi không cần DATEDIF
DATEDIF chạy được trên mọi phiên bản Excel nhưng không có trong danh sách hàm và không được gợi ý khi gõ công thức, nên một số người thích dùng YEARFRAC hơn. YEARFRAC(start,end,1) trả về số năm giữa hai ngày dưới dạng số thập phân, tính theo độ dài thật của từng năm (basis 1). INT bỏ đi phần lẻ.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Born | As of | DATEDIF | YEARFRAC |
| 2 | 1990-05-14 | 2026-10-01 | 36 | 36 |
| 3 | 1978-10-10 | 2026-10-01 | 47 | 47 |
| 4 | 2010-07-04 | 2026-10-01 | 16 | 16 |
Hai cột khớp nhau: 36, 47 và 16. Nếu không có INT, YEARFRAC ở hàng cuối trả về khoảng 16,24, hữu ích khi bạn cần số tuổi dạng thập phân, ví dụ trong một trang tính thống kê.
Vì sao không nên chia cho 365
Một lối tắt phổ biến là =INT((F2-B2)/365): số ngày đã sống chia cho số ngày trong một năm. Cứ bốn năm lại có thêm một ngày nhuận, nên sau vài chục năm, công thức này sẽ tăng tuổi trước sinh nhật vài ngày: sớm 12 ngày với sinh nhật thứ 48.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Born | As of | Days lived | Divide by 365 | DATEDIF |
| 2 | 1990-05-14 | 2026-10-01 | 13289 | 36 | 36 |
| 3 | 1978-10-10 | 2026-10-01 | 17523 | 48 | 47 |
Với người sinh ngày 1978-10-10, phép chia cho 365 cho ra 48 tuổi vào ngày 2026-10-01, chín ngày trước sinh nhật thứ 48. DATEDIF cho ra 47. Chia cho 365,25 sửa được phần lớn các hàng nhưng vẫn sai ở một số ngày, nên hãy dùng DATEDIF hoặc YEARFRAC.
Luyện tập: tuổi vào ngày khai giảng
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Name | Born | Age | As of | |
| 2 | Ana | 2012-04-17 | 2026-09-01 |
Đến lượt bạn: Trong C2, tính số tuổi tròn năm của Ana vào ngày trong E2.
Các bài kiểm tra ẩn sẽ đổi ngày trong E2, nên công thức phải đọc giá trị từ ô đó.
Vì sao tuổi lại hiện dưới dạng ngày
Nếu bạn gõ công thức tính tuổi vào một ô đang chứa ngày, hoặc vào một cột được định dạng ngày, Excel giữ nguyên định dạng ngày và hiển thị 36 thành 1900-02-05 (ngày thứ 36 trong hệ thống ngày của Excel; với thiết lập kiểu Mỹ, nó hiện là 2/5/1900). Con số bên dưới vẫn đúng. Chọn các ô rồi vào Home > Number Format > General (hoặc nhấn Ctrl+Shift+~, trên Mac là Control+Shift+~) là số tuổi hiện ra.
Câu hỏi thường gặp
Công thức tính tuổi trong Excel là gì?
=DATEDIF(B2,TODAY(),"Y"), với ngày sinh nằm trong B2. Công thức đếm số năm tròn từ ngày sinh đến hôm nay, nên tuổi chỉ tăng đúng vào ngày sinh nhật, không sớm hơn.
Làm sao để tính tuổi tại một ngày cụ thể trong Excel?
Nhập ngày đó vào một ô và dùng ô này thay cho TODAY(): =DATEDIF(B2,$F$2,"Y") cho ra tuổi tại ngày trong F2. Các dấu $ giữ cố định F2 khi bạn điền công thức xuống.
Làm sao để tính tuổi trong Excel mà không dùng DATEDIF?
Dùng =INT(YEARFRAC(B2,TODAY(),1)). YEARFRAC trả về số năm giữa hai ngày dưới dạng số thập phân, còn INT giữ lại phần năm tròn.
Vì sao công thức tính tuổi lại hiện ra một ngày như 1900-01-30?
Ô đó đang ở định dạng ngày, nên tuổi 30 được hiển thị thành ngày thứ 30 trong lịch của Excel. Chọn ô rồi đặt Home > Number Format thành General.
Vì sao chia cho 365 để tính tuổi lại sai?
Cứ bốn năm lại có một năm nhuận thêm một ngày, nên =INT((TODAY()-B2)/365) tính sinh nhật sớm vài ngày: người sinh ngày 1978-10-10 đã 48 tuổi theo công thức đó vào ngày 2026-10-01, sớm chín ngày so với sinh nhật thứ 48. DATEDIF đếm theo năm dương lịch nên không mắc lỗi này.