Hàm Tính Tuổi Trong Excel: Cách Sử Dụng, Ví Dụ Thực Tế Và Các Mẹo Nâng Cao

Mục lục bài viết

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.

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àmMô tảCú phápVí 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).

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 ý: DATEDIF khô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:
  • 0 hoặc bỏ qua: Actual/Actual (các ngày thực tế, mặc định)
  • 1: Actual/360
  • 2: Actual/365
  • 3: 30/360 US
  • 4: 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ácTuổ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ínhHạn chếThích hợp (lãi suất, bảo hiểm)
Tốc độ xử lý trên dữ liệu lớnRất nhanhCũ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:

Hàm Tính Tuổi Trong Excel
Hàm Tính Tuổi Trong Excel
=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:

  1. Chọn cột ngày sinh.
  2. Vào Home > Conditional Formatting > New Rule > Use a formula.
  3. Nhập công thức:
    =OR(A2<DATE(1900,1,1), A2>TODAY())
  4. Đặ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 DATEDIF khi chỉ cần tuổi đầy đủ (số nguyên). Dùng YEARFRAC khi 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

  1. Microsoft Docs – DATEDIF Function: https://learn.microsoft.com/en-us/office/vba/api/excel.worksheetfunction.datedif
  2. Microsoft Docs – YEARFRAC Function: https://learn.microsoft.com/en-us/office/vba/api/excel.worksheetfunction.yearfrac
  3. “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!

⚠️
LƯU Ý QUAN TRỌNG: Miễn trừ trách nhiệm: Mặc dù chúng tôi luôn nỗ lực để đảm bảo tính chính xác và cập nhật của thông tin, nhưng các quy định về giáo dục và tuyển sinh có thể thay đổi theo thời gian. BigSchool không chịu trách nhiệm về bất kỳ sai sót nào hoặc kết quả phát sinh từ việc sử dụng thông tin trên trang này. Độc giả nên liên hệ trực tiếp với nhà trường hoặc cơ quan chức năng để có thông tin mới nhất. Ngoài ra, BigSchool tuyệt đối không bán sản phẩm, khóa học hay cung cấp dịch vụ được nhắc đến trong bài.

Viết một bình luận