Cách Tách Năm Sinh Trong Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao

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

Mở Đầu

Trong công việc văn phòng, đặc biệt là khi xử lý dữ liệu nhân sự, khách hàng hay học sinh, việc tách năm sinh từ một chuỗi ngày tháng là một nhu cầu thường gặp. Excel, với khả năng xử lý dữ liệu mạnh mẽ, cung cấp nhiều công cụ và hàm giúp thực hiện công việc này một cách nhanh chóng và chính xác. Bài viết này sẽ hướng dẫn bạn cách tách năm sinh trong Excel từ những tình huống thực tế, bao gồm:

  1. Tách năm sinh từ ngày tháng dạng chuẩn (dd/mm/yyyy, mm/dd/yyyy, yyyy-mm-dd…).
  2. Tách năm sinh từ chuỗi ký tự không đồng nhất (ví dụ: “Sinh năm 1995”, “1995-05-12”, “12/05/1995”).
  3. Sử dụng các hàm Excel cơ bản (YEAR, TEXT, LEFT, RIGHT, MID, FIND, SEARCH, DATEVALUE…).
  4. Áp dụng công thức mảng và hàm mới (FILTER, LET, LAMBDA) cho phiên bản Excel 365/2026.
  5. Kỹ thuật trích xuất năm sinh bằng Power Query (Get & Transform Data).
  6. Xử lý lỗi và làm sạch dữ liệu (trường hợp ngày tháng không hợp lệ, dữ liệu thiếu hoặc dạng văn bản lẫn số).
  7. Tự động hóa bằng VBA (Macro) cho các bảng dữ liệu lớn.

Sau khi đọc xong bài viết, bạn sẽ nắm vững mọi cách tiếp cận để tách năm sinh trong Excel, từ cách đơn giản nhất dành cho người mới bắt đầu cho tới các giải pháp nâng cao cho chuyên gia dữ liệu.

1. Hiểu Rõ Định Dạng Ngày Tháng Trong Excel

1.1. Excel lưu trữ ngày tháng như thế nào?

Excel không lưu trữ ngày tháng dưới dạng chuỗi ký tự mà lưu dưới dạng số serial (số nguyên). Số serial này đại diện cho số ngày tính từ ngày 1/1/1900 (đối với Windows) hoặc 1/1/1904 (đối với Mac). Ví dụ:

  • Ngày 1/1/1900 → Serial 1
  • Ngày 31/12/2026 → Serial 45204

Nếu ô chứa ngày tháng được định dạng là Text, Excel sẽ coi đó là chuỗi ký tự và không thực hiện các phép tính ngày tháng.

1.2. Kiểm tra định dạng ô

  • Ctrl+1 → Mở hộp thoại Format Cells → Tab Number → Date hoặc Custom.
  • Nếu ô được định dạng là Text, bạn cần chuyển đổi sang kiểu Date hoặc General trước khi áp dụng hàm.

2. Tách Năm Sinh Khi Dữ Liệu Đã Là Ngày Tháng Đúng Định Dạng

2.1. Sử dụng hàm YEAR

Đây là cách nhanh nhất và chính xác nhất nếu ô chứa ngày tháng đã được Excel nhận dạng.

Công thức:

=YEAR(A2)
  • A2: ô chứa ngày tháng (ví dụ: 12/05/1995).
  • Kết quả trả về: 1995.

2.2. Khi ngày tháng được nhập dưới dạng chuỗi (Text)

Nếu ô chứa ngày tháng là chuỗi, bạn cần chuyển đổi sang ngày thực (Date) bằng hàm DATEVALUE hoặc TEXT.

2.2.1. Sử dụng DATEVALUE

=YEAR(DATEVALUE(A2))
  • Lưu ý: DATEVALUE chỉ làm việc với các định dạng ngày tháng chuẩn mà hệ thống ngôn ngữ của Excel nhận diện (ví dụ: dd/mm/yyyy hoặc mm/dd/yyyy tùy vào cài đặt regional).

2.2.2. Khi định dạng không chuẩn (yyyy-mm-dd, dd.mm.yyyy…)

Bạn có thể dùng SUBSTITUTE để thay dấu phân cách, rồi dùng DATEVALUE.

=YEAR(DATEVALUE(SUBSTITUTE(A2,"-","/")))

Hoặc:

=YEAR(DATEVALUE(SUBSTITUTE(A2,".","/")))

2.3. Khi ngày tháng là số serial (đã là kiểu Date) nhưng hiển thị dưới dạng Text

Sử dụng hàm TEXT để ép kiểu:

=YEAR(TEXT(A2,"dd/mm/yyyy"))

3. Tách Năm Sinh Từ Chuỗi Văn Bản Không Đồng Nhất

Trong thực tế, dữ liệu thường không sạch sẽ. Dưới đây là các kịch bản phổ biến và cách xử lý.

3.1. Chuỗi có chứa năm ở dạng 4 chữ số (1990, 2005…)

3.1.1. Sử dụng hàm MID + SEARCH (hoặc FIND)

Giả sử ô A2 chứa: "Sinh năm 1995".

=VALUE(MID(A2, SEARCH("199",A2),4))
  • SEARCH(“199”,A2): Tìm vị trí bắt đầu của “199”. Nếu năm có thể là 2000–2099, ta dùng “20” hoặc “19”.
  • MID: Lấy 4 ký tự bắt đầu từ vị trí tìm được.
  • VALUE: Ép chuỗi thành số.

3.1.2. Sử dụng hàm REGEXEXTRACT (Excel 365)

Excel 365 đã tích hợp hàm TEXTSPLIT, TEXTAFTER, nhưng chưa có hàm regex riêng. Tuy nhiên, bạn có thể dùng LET + FILTERXML để mô phỏng:

=LET( txt, A2, xml, "<t><s>" & SUBSTITUTE(txt," ","</s><s>") & "</s></t>", arr, FILTERXML(xml,"//snumber(.)=number(.)"), MAX(arr) // trả về giá trị năm lớn nhất trong chuỗi
)

Công thức trên tách các “token” (từ) trong chuỗi, lọc ra những token là số, và trả về số lớn nhất (giả sử là năm sinh).

3.2. Chuỗi có dạng ngày tháng đầy đủ (dd/mm/yyyy, mm-dd-yyyy…)

3.2.1. Sử dụng hàm DATEVALUE + YEAR

=YEAR(DATEVALUE(A2))

Nếu ngày tháng dùng dấu / hoặc -, Excel thường nhận ra.

3.2.2. Khi dấu phân cách là . hoặc không đồng nhất

=YEAR(DATEVALUE(SUBSTITUTE(SUBSTITUTE(A2,".","/"),"-","/")))

3.3. Nhiều ngày trong một ô, cần lấy năm của ngày đầu tiên

Ví dụ: "01/01/1990; 15/06/1995; 20/12/2000".

=YEAR(DATEVALUE(TRIM(LEFT(A2, FIND(";",A2&";")-1))))
  • FIND(“;”,A2&”;”): Tìm vị trí dấu ; đầu tiên (thêm &";" để tránh lỗi nếu không có dấu ;).
  • LEFT: Lấy phần trước dấu ;.
  • TRIM: Loại khoảng trắng dư thừa.
  • DATEVALUE + YEAR: Chuyển sang ngày và lấy năm.

3.4. Khi năm sinh nằm ở vị trí cố định (ví dụ: ký tự 1-4)

Nếu dữ liệu luôn có năm ở vị trí 1-4, dùng LEFT:

=VALUE(LEFT(A2,4))

Nếu năm ở vị trí cuối cùng (độ dài không cố định), dùng RIGHT:

=VALUE(RIGHT(A2,4))

4. Áp Dụng Công Thức Mảng (Dynamic Array) Trong Excel 365

Excel 365 cho phép công thức trả về mảng động, giúp xử lý nhiều trường hợp phức tạp hơn.

4.1. Lấy tất cả các năm trong một cột

Cách Tách Năm Sinh Trong Excel
Cách Tách Năm Sinh Trong Excel

Giả sử cột A chứa các chuỗi không đồng nhất, muốn tạo một cột B chỉ hiển thị năm sinh.

=LET( txt, A2:A1000, arr, FILTERXML("<t><s>"&SUBSTITUTE(txt," ","</s><s>")&"</s></t>","//snumber(.)=number(.)"), years, FILTER(arr, (arr>=1900)(arr<=YEAR(TODAY())) ), IFERROR(INDEX(years, SEQUENCE(ROWS(txt))),"")
)
  • FILTERXML: Tách các token và lấy những token là số.
  • FILTER: Chỉ giữ lại các số trong khoảng hợp lý (1900‑năm hiện tại).
  • INDEX + SEQUENCE: Đặt kết quả vào cột tương ứng.

4.2. Hàm LAMBDA Tùy Chỉnh

Bạn có thể tạo hàm tùy chỉnh để tái sử dụng:

=LET( ExtractYear, LAMBDA(txt, LET( cleaned, SUBSTITUTE(SUBSTITUTE(txt,"-","/"),".","/"), num, IFERROR(YEAR(DATEVALUE(cleaned)), VALUE(MID(txt, SEARCH("19",txt),4) & IFERROR(MID(txt, SEARCH("20",txt),4),"")) ), IF(ISNUMBER(num), num, "") ) ), ExtractYear(A2)
)

Sau khi định nghĩa hàm ExtractYear, bạn có thể gọi nó cho bất kỳ ô nào: =ExtractYear(A2).

5. Sử Dụng Power Query Để Tách Năm Sinh

Power Query (Get & Transform) là công cụ mạnh mẽ để làm sạch dữ liệu trước khi đưa vào bảng tính.

5.1. Bước 1: Nhập Dữ Liệu Vào Power Query

  1. Chọn bảng dữ liệu → Data → From Table/Range.
  2. Power Query Editor mở ra.

5.2. Bước 2: Tách Năm

5.2.1. Khi cột là kiểu Date

  • Chọn cột ngày tháng → Add Column → Date → Year → Year.
  • Cột mới sẽ chứa năm.

5.2.2. Khi cột là Text chứa ngày hoặc năm

  • Chọn cột → Add Column → Custom Column.
  • Nhập công thức:
= try Date.Year(Date.FromText(Column1)) otherwise try Number.FromText(Text.Middle(Column1, Text.PositionOf(Column1,"19"),4)) otherwise null
  • try … otherwise: Xử lý lỗi nếu chuyển đổi không thành công.
  • Date.FromText: Chuyển chuỗi thành ngày.
  • Date.Year: Lấy năm.
  • Nếu không phải ngày, dùng Text.Middle để lấy 4 ký tự bắt đầu từ “19” hoặc “20”.

5.3. Bước 3: Đóng & Tải Lại

  • Home → Close & Load → Kết quả sẽ là một bảng mới trong Excel với cột năm đã tách.

6. Xử Lý Lỗi Và Kiểm Tra Độ Chính Xác

6.1. Kiểm tra giá trị trả về là năm hợp lệ

=IF(AND(B2>=1900, B2<=YEAR(TODAY())), B2, "Năm không hợp lệ")

6.2. Đánh dấu các ô lỗi

Sử dụng Conditional Formatting:

  1. Chọn cột năm.
  2. Home → Conditional Formatting → New Rule → Use a formula to determine which cells to format.
  3. Công thức:
=OR(ISERROR(B2), B2<1900, B2>YEAR(TODAY()))
  1. Đặt màu nền đỏ để cảnh báo.

6.3. Loại bỏ khoảng trắng và ký tự không mong muốn

=TRIM(CLEAN(A2))
  • CLEAN: Loại bỏ ký tự không hiển thị (ASCII < 32).
  • TRIM: Loại khoảng trắng đầu/cuối và dư thừa.

7. Tự Động Hóa Bằng VBA (Macro)

Khi dữ liệu rất lớn (hàng trăm nghìn), công thức có thể làm chậm file. VBA giúp thực hiện nhanh hơn.

7.1. Macro Tách Năm Từ Cột A → Cột B

Sub ExtractYear() Dim ws As Worksheet Dim rng As Range, cell As Range Dim txt As String, yr As Long Set ws = ThisWorkbook.Sheets("Sheet1") Set rng = ws.Range("A2", ws.Cells(ws.Rows.Count, "A").End(xlUp)) Application.ScreenUpdating = False For Each cell In rng txt = Trim(cell.Value) yr = 0 ' Cố gắng chuyển thành ngày On Error Resume Next yr = Year(CDate(txt)) If Err.Number <> 0 Then Err.Clear ' Tìm 4 chữ số liên tiếp Dim reg As Object Set reg = CreateObject("VBScript.RegExp") reg.Pattern = "\b(19|20)\d{2}\b" reg.Global = True If reg.Test(txt) Then yr = CLng(reg.Execute(txt)(0)) End If End If On Error GoTo 0 If yr >= 1900 And yr <= Year(Date) Then cell.Offset(0, 1).Value = yr Else cell.Offset(0, 1).Value = "Invalid" End If Next cell Application.ScreenUpdating = True MsgBox "Hoàn thành tách năm sinh!", vbInformation
End Sub
  • CDate: Chuyển chuỗi thành ngày nếu có thể.
  • RegExp: Tìm pattern năm (1900‑2099).
  • Kết quả được ghi vào cột B (Offset(0,1)).

7.2. Gán Macro vào nút

  1. Developer → Insert → Button (Form Control).
  2. Gán macro ExtractYear cho nút.
  3. Nhấn nút mỗi khi cần cập nhật.

8. Những Lưu Ý Khi Làm Việc Với Dữ Liệu Thực Tế

Vấn đềGiải pháp
Ngày tháng nhập dạng văn bảnDùng DATEVALUE, SUBSTITUTE hoặc chuyển sang kiểu Date trong Power Query.
Năm sinh bị thiếu hoặc không hợp lệKiểm tra bằng IF(AND(year>=1900, year<=YEAR(TODAY())),…). Đánh dấu lỗi bằng Conditional Formatting.
Có nhiều định dạng trong cùng một cộtSử dụng công thức đa điều kiện (IFERROR, IFS) hoặc Power Query để chuẩn hoá.
Dữ liệu quá lớn, công thức chậmDùng VBA hoặc Power Query để xử lý trước khi đưa vào bảng tính.
Ký tự đặc biệt, khoảng trắng thừaTRIM(CLEAN(text)) trước khi áp dụng các hàm ngày tháng.

9. Tổng Kết

Việc tách năm sinh trong Excel không chỉ là một thao tác đơn giản mà còn là một chuỗi các bước xử lý dữ liệu tùy thuộc vào độ sạch và định dạng của nguồn. Bằng cách:

  1. Xác định kiểu dữ liệu (Date vs Text).
  2. Áp dụng hàm YEAR cho dữ liệu ngày tháng chuẩn.
  3. Sử dụng các hàm chuỗi (MID, LEFT, RIGHT, SEARCH, SUBSTITUTE) kết hợp với DATEVALUE cho các dạng không chuẩn.
  4. Khai thác công thức mảng, LAMBDA trong Excel 365 để tái sử dụng và mở rộng.
  5. Làm sạch dữ liệu bằng Power Query khi cần xử lý hàng loạt.
  6. Tự động hoá bằng VBA cho tập dữ liệu lớn.

Bạn sẽ có khả năng trích xuất năm sinh một cách nhanh chóng, chính xác và hiệu quả, đồng thời giảm thiểu lỗi và tăng tính chuyên nghiệp cho báo cáo hay phân tích dữ liệu.

Hãy thử áp dụng các phương pháp trên vào dự án thực tế của bạn và chia sẻ kết quả. Nếu còn thắc mắc hoặc muốn tìm hiểu sâu hơn về một kỹ thuật nào đó, đừng ngần ngại bình luận dưới đây!

⚠️
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