Có thể bạn quan tâm: Cách Lọc Dữ Liệu Trong Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
1. Giới thiệu tổng quan
Trong môi trường làm việc với dữ liệu cá nhân, đặc biệt là trong các lĩnh vực như nhân sự, kế toán, y tế, giáo dục hay marketing, việc tính tuổi của một người dựa trên ngày sinh là một nhu cầu thường gặp. Excel – phần mềm bảng tính mạnh mẽ của Microsoft – cung cấp nhiều hàm ngày tháng có thể giúp chúng ta thực hiện công việc này một cách nhanh chóng, chính xác và linh hoạt. Bài viết này sẽ đi sâu vào hàm tính tuổi trong Excel, từ những hàm cơ bản như DATEDIF, YEARFRAC, INT, ROUNDUP cho tới các công thức kết hợp thông minh, cách xử lý các trường hợp đặc biệt (ngày sinh chưa đầy đủ, năm nhuận, tính tuổi tới ngày hiện tại hoặc một ngày cụ thể) và các mẹo tối ưu hiệu suất khi làm việc với dữ liệu lớn.
Mục tiêu của chúng tôi là cung cấp một tài liệu tham khảo toàn diện, không chỉ giúp người mới bắt đầu hiểu cách tính tuổi trong Excel, mà còn hỗ trợ người dùng nâng cao áp dụng các kỹ thuật này trong các dự án thực tế. Toàn bộ nội dung được chia thành các phần rõ ràng, kèm theo ví dụ minh họa, hình ảnh mô phỏng công thức và bảng dữ liệu mẫu, giúp bạn dễ dàng sao chép, tùy chỉnh và áp dụng ngay vào công việc.
Có thể bạn quan tâm: Cách Tính Căn Bậc 2 Trong Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
2. Các hàm ngày tháng cơ bản trong Excel
Trước khi đi vào công thức tính tuổi, chúng ta cần nắm vững một số hàm ngày tháng thường dùng trong Excel:
| Hàm | Mô tả | Cú pháp | Ví dụ |
|---|---|---|---|
DATE(year, month, day) | Tạo một giá trị ngày tháng từ các thành phần năm, tháng, ngày | =DATE(1990,5,21) | Trả về 21/05/1990 |
TODAY() | Trả về ngày hiện tại (không có thời gian) | =TODAY() | Nếu hôm nay là 21/06/2026, trả về 21/06/2026 |
NOW() | Trả về ngày và thời gian hiện tại | =NOW() | 21/06/2026 14:35 |
YEAR(serial_number) | Trích xuất năm từ ngày | =YEAR(A2) | Nếu A2=15/03/2000 → trả về 2000 |
MONTH(serial_number) | Trích xuất tháng | =MONTH(A2) | Nếu A2=15/03/2000 → trả về 3 |
DAY(serial_number) | Trích xuất ngày | =DAY(A2) | Nếu A2=15/03/2000 → trả về 15 |
DATEDIF(start_date, end_date, unit) | Tính khoảng cách giữa hai ngày theo đơn vị | =DATEDIF(A2,B2,"Y") | Tính số năm đầy đủ giữa A2 và B2 |
YEARFRAC(start_date, end_date, basis) | Tính số năm thập phân giữa hai ngày | =YEARFRAC(A2,B2,1) | Trả về 2,75 nếu khoảng cách 2 năm 9 tháng |
INT(number) | Lấy phần nguyên | =INT(3.7) → 3 | |
ROUNDUP(number, num_digits) | Làm tròn lên | =ROUNDUP(3.2,0) → 4 |
Trong số các hàm trên, DATEDIF và YEARFRAC là hai công cụ chính để tính tuổi. DATEDIF trả về số nguyên (tuổi đầy đủ), còn YEARFRAC trả về tuổi dưới dạng thập phân, rất hữu ích khi cần tính tuổi tới một ngày cụ thể (ví dụ: tính tuổi tính lãi suất, bảo hiểm).
Có thể bạn quan tâm: Chọn Vùng In Trong Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
3. Cách tính tuổi cơ bản với DATEDIF
3.1. Cú pháp và các đối số
DATEDIF(start_date, end_date, unit)
- start_date: ngày sinh (hoặc ngày bắt đầu tính tuổi)
- end_date: ngày hiện tại hoặc ngày kết thúc tính tuổi
- unit: đơn vị tính, thường dùng:
"Y": số năm đầy đủ (tuổi)"M": số tháng đầy đủ"D": số ngày"YM": số tháng còn lại sau khi trừ đi số năm đầy đủ"MD": số ngày còn lại sau khi trừ đi số tháng đầy đủ"YD": số ngày còn lại sau khi trừ đi số năm đầy đủ
Lưu ý:
DATEDIFkhông được liệt kê trong danh sách hàm chính của Excel, nhưng vẫn hoạt động ổn định trong mọi phiên bản từ Excel 2000 trở lên.
3.2. Ví dụ thực tế
Giả sử cột A chứa ngày sinh (định dạng ngày) và chúng ta muốn tính tuổi tính đến ngày hiện tại (hàm TODAY()).
| A (Ngày sinh) | B (Tuổi) |
|---|---|
| 15/03/1990 | =DATEDIF(A2,TODAY(),"Y") |
| 28/11/2002 | =DATEDIF(A3,TODAY(),"Y") |
| 01/01/1985 | =DATEDIF(A4,TODAY(),"Y") |
Kết quả sẽ trả về 36, 23, 41 (tùy vào ngày hiện tại). Công thức rất ngắn gọn và dễ hiểu.
3.3. Tính tuổi tới một ngày cụ thể
Nếu bạn muốn tính tuổi tới một ngày cuối năm (ví dụ 31/12/2026) để xác định độ tuổi cuối năm, chỉ cần thay TODAY() bằng ngày cố định:
=DATEDIF(A2, DATE(2026,12,31), "Y")
3.4. Khi nào cần dùng DATEDIF với các đơn vị kép?
Đôi khi chúng ta muốn hiển thị tuổi dưới dạng “x năm y tháng”. Ta có thể kết hợp hai hàm DATEDIF:
=DATEDIF(A2,TODAY(),"Y") & " năm " & DATEDIF(A2,TODAY(),"YM") & " tháng"
Ví dụ: nếu ngày sinh là 15/03/1990 và hôm nay là 21/06/2026, công thức sẽ trả về “36 năm 3 tháng”.
4. Tính tuổi thập phân với YEARFRAC
4.1. Khi nào nên dùng YEARFRAC?
- Khi cần tính tuổi để áp dụng các công thức tài chính (lãi suất, bảo hiểm) dựa trên tuổi thực tế (có phần thập phân).
- Khi tính tuổi trung bình của một nhóm người, việc lấy giá trị thập phân sẽ cho kết quả chính xác hơn.
4.2. Cú pháp
YEARFRAC(start_date, end_date, basis)
- basis (tùy chọn) xác định cách tính số ngày trong tháng và năm:
0hoặc bỏ qua: Actual/Actual (các ngày thực tế, mặc định)1: Actual/3602: Actual/3653: 30/360 US4: 30/360 EU
4.3. Ví dụ
=YEARFRAC(A2, TODAY(), 1)
Giả sử A2 = 15/03/1990, hôm nay là 21/06/2026. Kết quả có thể là 36,26 (tức 36 năm và 0,26 năm ≈ 3,1 tháng). Khi muốn làm tròn tới 2 chữ số thập phân:
=ROUND(YEARFRAC(A2, TODAY(), 1), 2)
4.4. So sánh DATEDIF và YEARFRAC
| Tiêu chí | DATEDIF (Y) | YEARFRAC |
|---|---|---|
| Độ chính xác | Tuổi đầy đủ (số nguyên) | Tuổi thập phân |
| Đơn vị trả về | Năm, tháng, ngày (theo unit) | Năm (số thập phân) |
| Độ phức tạp khi hiển thị “x năm y tháng” | Dễ (kết hợp 2 DATEDIF) | Phức tạp (cần tách phần thập phân) |
| Ứng dụng tài chính | Hạn chế | Thích hợp (lãi suất, bảo hiểm) |
| Tốc độ xử lý trên dữ liệu lớn | Rất nhanh | Cũng nhanh, nhưng có thể chậm hơn một chút vì tính thập phân |
5. Xử lý các trường hợp đặc biệt
5.1. Ngày sinh chưa đầy đủ (chưa nhập năm)
Nếu dữ liệu chỉ có ngày và tháng (ví dụ: 15/03) mà không có năm, chúng ta có thể giả định một năm mặc định (ví dụ 1900) để tính tuổi, sau đó trừ đi phần chênh lệch:
=DATEDIF(DATE(1900,MONTH(A2),DAY(A2)), TODAY(), "Y") - 122
Giải thích: 2026 – 1900 = 122 năm chênh lệch; sau khi tính tuổi từ 1900, chúng ta trừ đi 122 để có tuổi thực tế.
5.2. Năm nhuận và ngày 29/02
Ngày 29/02 chỉ xuất hiện trong năm nhuận. Khi tính tuổi tới một ngày không phải năm nhuận, DATEDIF tự động điều chỉnh. Tuy nhiên, nếu sử dụng YEARFRAC với basis 0, kết quả vẫn chính xác vì nó tính dựa trên ngày thực tế.
Nếu muốn tính tuổi đúng cho người sinh 29/02, chúng ta có thể dùng công thức:
=IF(AND(MONTH(A2)=2, DAY(A2)=29), DATEDIF(A2, TODAY(), "Y") + IF(OR(MOD(YEAR(TODAY()),4)=0, MOD(YEAR(TODAY()),400)=0), 0, -1), DATEDIF(A2, TODAY(), "Y"))
Công thức trên giảm 1 năm nếu năm hiện tại không phải năm nhuận và ngày hiện tại chưa đến 28/02.
5.3. Tính tuổi tới ngày cuối tháng
Nếu mục tiêu là tính tuổi tới ngày cuối của tháng sinh (đôi khi được dùng trong các quy định pháp luật), chúng ta có thể dùng:

Có thể bạn quan tâm: Hàm Nối Chuỗi Trong Excel: Từ Cơ Bản Đến Nâng Cao
=DATEDIF(A2, EOMONTH(TODAY(),0), "Y")
EOMONTH(TODAY(),0) trả về ngày cuối tháng hiện tại.
5.4. Đối phó với dữ liệu lỗi (ô trống, ngày không hợp lệ)
Khi dữ liệu không đầy đủ, công thức có thể trả về lỗi #VALUE!. Để tránh, chúng ta bao bọc bằng IFERROR hoặc kiểm tra ISNUMBER:
=IF(ISNUMBER(A2), DATEDIF(A2, TODAY(), "Y"), "")
Hoặc:
=IFERROR(DATEDIF(A2, TODAY(), "Y"), "Chưa nhập ngày sinh")
6. Tối ưu hiệu suất khi làm việc với hàng nghìn bản ghi
Khi bảng dữ liệu có hàng chục hoặc hàng trăm nghìn dòng, việc tính tuổi bằng công thức lặp lại có thể làm chậm Excel. Dưới đây là một số chiến lược:
6.1. Sử dụng Table và Structured References
Chuyển dải dữ liệu thành một Table (Ctrl+T). Khi đó, công thức sẽ tự động mở rộng và Excel tối ưu tính toán:
=DATEDIF(Ngày sinh, TODAY(), "Y")
6.2. Tính trước ngày hiện tại một lần
Thay vì gọi TODAY() trong mỗi ô, lưu giá trị ngày hiện tại vào một ô (ví dụ Z1) và tham chiếu tới ô này:
Z1: =TODAY()
B2: =DATEDIF(A2, $Z$1, "Y")
Điều này giảm số lần Excel phải tính hàm ngày động.
6.3. Sử dụng Power Query (Get & Transform)
Power Query cho phép thực hiện tính toán trước khi tải dữ liệu vào bảng tính. Bạn có thể thêm cột tùy chỉnh trong Power Query:
= Table.AddColumn(Source, "Tuổi", each Duration.TotalDays(Date.From(DateTime.LocalNow()) - Ngày sinh) / 365.25, type number)
Sau khi tải lại, cột “Tuổi” đã có sẵn và không tốn tài nguyên trong sheet.
6.4. Áp dụng Array Formula (Excel 365)
Với Excel 365, bạn có thể tính tuổi cho toàn bộ cột bằng một công thức mảng:
=LET(ngaysinh; A2:A1000; today; TODAY(); DATEDIF(ngaysinh; today; "Y"))
Kết quả sẽ trả về một mảng các giá trị tuổi, tự động “spill” ra các ô liền kề.
7. Các ví dụ thực tế trong các ngành nghề
7.1. Nhân sự – Lập bảng lương và phụ cấp tuổi
Trong bảng lương, một số công ty trả phụ cấp dựa trên độ tuổi (ví dụ: +$100 cho mỗi năm trên 40). Công thức mẫu:
=IF(DATEDIF(A2, TODAY(), "Y")>40, (DATEDIF(A2, TODAY(), "Y")-40)100, 0)
7.2. Bảo hiểm – Tính phí dựa trên tuổi thập phân
Công ty bảo hiểm yêu cầu tính phí dựa trên tuổi thực tế (đến tháng). Sử dụng YEARFRAC:
=IFERROR(YEARFRAC(A2, TODAY(), 1) 0.02, 0) // 2% phí dựa trên tuổi
7.3. Giáo dục – Xác định lớp học phù hợp
Một trường học muốn phân lớp dựa trên tuổi vào ngày 1/9 mỗi năm. Công thức:
=DATEDIF(A2, DATE(YEAR(TODAY()),9,1), "Y")
Nếu ngày sinh sau ngày 1/9, tuổi sẽ giảm 1 năm, vì học sinh sẽ vào lớp sau.
7.4. Marketing – Phân khúc khách hàng theo độ tuổi
Giả sử bạn có danh sách khách hàng và muốn tạo 3 nhóm: 18-25, 26-35, 36+. Công thức:
=LET(tuoi; DATEDIF(A2, TODAY(), "Y"); IF(tuoi<18, "Dưới 18", IF(tuoi<=25, "18-25", IF(tuoi<=35, "26-35", "36+"))))
Sau khi có cột nhóm, bạn có thể dùng PivotTable để phân tích hành vi mua hàng.
7.5. Y tế – Tính tuổi cho bệnh nhân để áp dụng chuẩn đoán
Trong một bệnh viện, các chỉ số chuẩn (BMI, huyết áp) thay đổi theo độ tuổi. Công thức tính tuổi và tự động đưa vào bảng chuẩn:
=DATEDIF(A2, TODAY(), "Y")
Sau đó, dùng VLOOKUP hoặc XLOOKUP để lấy giá trị chuẩn tương ứng.
8. Các công thức nâng cao và tùy chỉnh
8.1. Công thức “Tuổi + Tháng + Ngày”
Nếu muốn hiển thị tuổi chi tiết dưới dạng x năm y tháng z ngày, ta kết hợp 3 hàm DATEDIF:
=DATEDIF(A2, TODAY(), "Y") & " năm " & DATEDIF(A2, TODAY(), "YM") & " tháng " & DATEDIF(A2, TODAY(), "MD") & " ngày"
8.2. Tự động cập nhật “Tuổi tới ngày sinh kế tiếp”
Đôi khi cần biết thời gian còn lại tới sinh nhật tiếp theo. Công thức:
=IF(DATE(YEAR(TODAY()), MONTH(A2), DAY(A2)) >= TODAY(), DATEDIF(TODAY(), DATE(YEAR(TODAY()), MONTH(A2), DAY(A2)), "D"), DATEDIF(TODAY(), DATE(YEAR(TODAY())+1, MONTH(A2), DAY(A2)), "D"))
Kết quả trả về số ngày còn lại. Khi kết hợp với tuổi hiện tại:
=DATEDIF(A2, TODAY(), "Y") & " tuổi, còn " &
IF(... công thức trên...) & " ngày tới sinh nhật"
8.3. Định dạng ngày tháng đa ngôn ngữ
Nếu file Excel được chia sẻ quốc tế, ngày tháng có thể hiển thị theo định dạng khác nhau. Để tránh lỗi, luôn ép dữ liệu thành ngày thực bằng cách dùng DATEVALUE:
=DATEDIF(DATEVALUE(TEXT(A2,"dd/mm/yyyy")), TODAY(), "Y")
8.4. Sử dụng VBA để tạo hàm tùy chỉnh
Nếu muốn một hàm đơn giản gọi =TinhTuoi(ngaysinh) trong ô, có thể viết VBA:
Function TinhTuoi(ngaySinh As Date, Optional denNgay As Variant) As Long Dim endDate As Date If IsMissing(denNgay) Or IsEmpty(denNgay) Then endDate = Date Else endDate = denNgay End If TinhTuoi = DateDiff("yyyy", ngaySinh, endDate) _ - IIf(Format(endDate, "mmdd") < Format(ngaySinh, "mmdd"), 1, 0)
End Function
Sau khi lưu macro, bạn có thể dùng:
=TinhTuoi(A2) // tuổi tới hôm nay
=TinhTuoi(A2, DATE(2026,12,31)) // tuổi tới cuối năm 2026
9. Kiểm tra và xác thực dữ liệu
9.1. Xác nhận ngày hợp lệ
Sử dụng ISNUMBER kết hợp DATEVALUE:
=IF(ISNUMBER(DATEVALUE(A2)), "Hợp lệ", "Không hợp lệ")
9.2. Đánh dấu các ô ngày sinh không hợp lý (trước năm 1900 hoặc sau ngày hiện tại)
Áp dụng Conditional Formatting:
- Chọn cột ngày sinh.
- Vào Home > Conditional Formatting > New Rule > Use a formula.
- Nhập công thức:
=OR(A2<DATE(1900,1,1), A2>TODAY()) - Đặt định dạng màu nền đỏ.
9.3. Kiểm tra độ nhất quán giữa ngày sinh và tuổi đã nhập
Nếu có cột tuổi đã nhập (cột B) và ngày sinh (cột A), tạo công thức so sánh:
=IF(ABS(B2 - DATEDIF(A2, TODAY(), "Y"))>1, "Không khớp", "OK")
Điều này giúp phát hiện lỗi nhập liệu.
10. Tổng kết và lời khuyên thực tiễn
- Chọn hàm phù hợp: Dùng
DATEDIFkhi chỉ cần tuổi đầy đủ (số nguyên). DùngYEARFRACkhi cần độ chính xác thập phân cho các tính toán tài chính. - Xử lý trường hợp đặc biệt: Luôn kiểm tra năm nhuận, ngày 29/02 và dữ liệu thiếu.
- Tối ưu hiệu suất: Lưu ngày hiện tại trong một ô, dùng Table, Power Query hoặc công thức mảng để giảm tải tính toán.
- Đảm bảo dữ liệu sạch: Áp dụng kiểm tra hợp lệ và định dạng có điều kiện để nhanh chóng phát hiện lỗi.
- Tự động hoá: Khi công việc lặp đi lặp lại, cân nhắc viết hàm VBA hoặc macro để đơn giản hoá quy trình.
- Tài liệu và đào tạo: Ghi lại công thức, giải thích cách hoạt động trong tài liệu nội bộ để các thành viên trong nhóm có thể duy trì và cập nhật.
Bằng cách nắm vững các hàm và kỹ thuật trên, bạn sẽ có thể tính tuổi trong Excel một cách nhanh chóng, chính xác và linh hoạt, đáp ứng mọi nhu cầu từ quản lý nhân sự, tính phí bảo hiểm, phân khúc khách hàng, tới các báo cáo thống kê phức tạp. Hy vọng bài viết đã cung cấp đủ kiến thức và công cụ để bạn tự tin áp dụng trong công việc hàng ngày.
Tài liệu tham khảo
- Microsoft Docs – DATEDIF Function: https://learn.microsoft.com/en-us/office/vba/api/excel.worksheetfunction.datedif
- Microsoft Docs – YEARFRAC Function: https://learn.microsoft.com/en-us/office/vba/api/excel.worksheetfunction.yearfrac
- “Excel Power Query for Data Transformation”, Ch. 4, 2026.
Chúc bạn thành công trong việc áp dụng các công thức tính tuổi trong Excel!

Tiến sĩ Lê Thống Nhất sinh năm 1955 tại Nghệ An, là nhà giáo, nhà báo và doanh nhân trong lĩnh vực giáo dục. Ông từng giảng dạy Toán học tại Trường THPT Chuyên Phan Bội Châu và đảm nhiệm nhiều vai trò trong ngành giáo dục, từ viết sách, biên soạn tài liệu đến sáng lập các dự án hỗ trợ học tập trực tuyến.
Ông là người sáng lập BigSchool – nền tảng giáo dục trực tuyến kết nối giáo viên và học sinh cả nước. Ngoài ra, ông còn nổi tiếng với vai trò tác giả, diễn giả truyền cảm hứng và khách mời trên nhiều chương trình truyền hình, trong đó có “Ai là triệu phú” trên truyền hình VTV.
Trong suốt sự nghiệp, Tiến sĩ Lê Thống Nhất đã nhận nhiều giải thưởng giáo dục và được biết đến như một người luôn đổi mới, ứng dụng công nghệ vào dạy và học, góp phần lan tỏa tri thức và niềm say mê học tập cho thế hệ trẻ.
