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

Trong môi trường làm việc hiện đại, việc quản lý dữ liệu khách hàng, nhân viên hay đối tác thường xuyên gặp phải vấn đề về định dạng thông tin. Một trong những thách thức phổ biến nhất là tách tên (họ, tên đệm, tên) từ một cột chứa đầy đủ họ và tên. Excel, với hàng loạt hàm và công cụ mạnh mẽ, chính là người bạn đồng hành đáng tin cậy giúp bạn 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ẽ cung cấp cho bạn hướng dẫn chi tiết, từng bước về cách tách tên trong Excel, từ các phương pháp cơ bản sử dụng hàm LEFT, RIGHT, MID, FIND, LEN cho đến các kỹ thuật nâng cao với TEXTSPLIT, FILTERXML, Power Query và thậm chí là macro VBA. Bạn sẽ nắm vững cách:

  • Tách họ, tên đệm và tên khi dữ liệu có cấu trúc đồng nhất.
  • Xử lý trường hợp dữ liệu không đồng nhất, ví dụ có hoặc không có tên đệm, có ký tự thừa, dấu cách thừa.
  • Áp dụng công cụ Text to Columns (Văn bản thành cột) nhanh chóng cho hàng nghìn bản ghi.
  • Sử dụng Power Query để tách tên trong quy trình ETL (Extract‑Transform‑Load) tự động.
  • Viết macro VBA để tách tên trong các file Excel lớn, giảm thiểu thao tác thủ công.

Sau khi đọc xong, bạn sẽ có bộ công cụ hoàn chỉnh để xử lý bất kỳ tập dữ liệu nào chứa họ và tên, đồng thời nâng cao hiệu suất làm việc và độ chính xác của báo cáo.

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

Mục Lục

  1. Hiểu Rõ Dữ Liệu: Các Kiểu Định Dạng Tên Phổ Biến
  2. Cách 1: Sử Dụng Text to Columns (Văn Bản Thành Cột)
  3. Cách 2: Hàm Cơ Bản LEFT, RIGHT, MID, FIND, LEN
  4. Cách 3: Hàm TEXTSPLIT (Excel 365/2026 trở lên)
  5. Cách 4: Kết Hợp FILTERXML và SUBSTITUTE
  6. Cách 5: Sử Dụng Power Query Để Tách Tên
  7. Cách 6: Macro VBA Tự Động Tách Họ, Tên Đệm, Tên
  8. Xử Lý Các Trường Hợp Ngoại Lệ: Dấu Cách Thừa, Tên Đệm Nhiều Từ, Ký Tự Đặc Biệt
  9. Kiểm Tra và Xác Nhận Kết Quả
  10. Mẹo Tối Ưu Hóa Và Tự Động Hóa Quy Trình
  11. Kết Luận

1. Hiểu Rõ Dữ Liệu: Các Kiểu Định Dạng Tên Phổ Biến

Trước khi áp dụng bất kỳ công cụ nào, việc phân tích cấu trúc dữ liệu là bước quan trọng nhất. Dưới đây là một số mẫu thường gặp:

MẫuVí dụGhi chú
Mẫu 1Nguyễn Văn AHọ (Nguyễn) + Tên đệm (Văn) + Tên (A)
Mẫu 2Trần Thị BHọ (Trần) + Tên đệm (Thị) + Tên (B)
Mẫu 3Lê CChỉ có Họ (Lê) và Tên (C), không có tên đệm
Mẫu 4Phạm Thị Thu HàHọ (Phạm) + Nhiều từ tên đệm (Thị Thu) + Tên (Hà)
Mẫu 5Đỗ Dương DDấu cách thừa, cần làm sạch trước
Mẫu 6John SmithĐịnh dạng tiếng Anh, Họ (John) + Tên (Smith)
Mẫu 7O'Connor MichaelKý tự đặc biệt (apostrophe) trong họ

Bước 1: Xác định độ đồng nhất của dữ liệu. Nếu toàn bộ cột đều có cùng số thành phần (ví dụ: luôn có 3 thành phần), các hàm cắt chuỗi sẽ đơn giản hơn. Nếu không đồng nhất, chúng ta cần xây dựng công thức linh hoạt hoặc dùng Power Query để xử lý.

Bước 2: Loại bỏ dấu cách thừa (leading/trailing spaces) bằng hàm TRIM. Điều này giúp các hàm FIND và SEARCH hoạt động chính xác.

=TRIM(A2) // A2 chứa giá trị gốc

2. Cách 1: Sử Dụng Text to Columns (Văn Bản Thành Cột)

Text to Columns là công cụ nhanh cho dữ liệu đồng nhất, không yêu cầu viết công thức.

2.1. Thực Hiện Các Bước Cơ Bản

  1. Chọn cột chứa họ và tên (ví dụ cột A).
  2. Vào Data → Text to Columns.
  3. Chọn Delimited → Next.
  4. Đánh dấu Space (dấu cách) làm delimiter. Nếu có dấu cách thừa, chọn Treat consecutive delimiters as one.
  5. Click Next, chọn vị trí bắt đầu cột mới (ví dụ B, C, D).
  6. Click Finish.

Kết quả: Họ, tên đệm, tên sẽ được tách ra thành các cột riêng biệt.

2.2. Khi Dữ Liệu Không Đồng Nhất

Nếu một số ô chỉ có hai thành phần (họ + tên) và các ô khác có ba, Excel sẽ đưa các thành phần còn lại vào các cột kế tiếp, gây dịch lệch. Để khắc phục:

  • Sắp xếp dữ liệu theo độ dài trước khi tách.
  • Hoặc sử dụng công thức (phần sau) để xử lý linh hoạt hơn.

3. Cách 2: Hàm Cơ Bản LEFT, RIGHT, MID, FIND, LEN

Khi muốn tự động hoá trong một bảng tính lớn, các hàm chuỗi là lựa chọn mạnh mẽ.

3.1. Tách Họ (Phần Đầu Tiên)

Giả sử ô A2 chứa "Nguyễn Văn A" (đã được TRIM). Họ là phần trước dấu cách đầu tiên.

=LEFT(A2, FIND(" ", A2) - 1)
  • FIND(" ", A2) trả về vị trí của dấu cách đầu tiên (7).
  • LEFT(..., 7-1) lấy 6 ký tự đầu tiên → "Nguyễn".

3.2. Tách Tên (Phần Cuối Cùng)

Tên là phần sau dấu cách cuối cùng.

=RIGHT(A2, LEN(A2) - FIND("@", SUBSTITUTE(A2, " ", "@", LEN(A2)-LEN(SUBSTITUTE(A2," ","")))))

Giải thích:

  1. SUBSTITUTE(A2, " ", "@", LEN(A2)-LEN(SUBSTITUTE(A2," ",""))) thay dấu cách cuối cùng bằng ký tự @.
  2. FIND("@", ...) tìm vị trí của @.
  3. LEN(A2) - vị trí cho độ dài phần sau dấu cách cuối.
  4. RIGHT trả về phần cuối cùng.

Công thức ngắn gọn hơn (Excel 2026 trở lên):

=TRIM(RIGHT(SUBSTITUTE(A2, " ", REPT(" ", 100)), 100))

Cách hoạt động: Thay mỗi dấu cách bằng 100 dấu cách, sau đó lấy 100 ký tự cuối cùng → phần sau dấu cách cuối cùng.

3.3. Tách Tên Đệm (Giữa Họ và Tên)

Tên đệm là phần còn lại sau khi đã lấy họ và tên.

=TRIM(MID(A2, LEN(LEFT(A2, FIND(" ", A2))) + 1, LEN(A2) - LEN(LEFT(A2, FIND(" ", A2))) - LEN(RIGHT(A2, LEN(A2) - FIND("@", SUBSTITUTE(A2, " ", "@", LEN(A2)-LEN(SUBSTITUTE(A2," ","")))))) ))

Công thức trên khá phức tạp, vì vậy chúng ta có thể đơn giản hoá:

=TRIM(SUBSTITUTE(SUBSTITUTE(A2, LEFT(A2, FIND(" ", A2)), ""), RIGHT(A2, LEN(A2) - FIND("@", SUBSTITUTE(A2, " ", "@", LEN(A2)-LEN(SUBSTITUTE(A2," ",""))))), ""))

3.4. Tổng Hợp Công Thức (Đối Với Dữ Liệu Đồng Nhất)

CộtCông ThứcMô Tả
B (Họ)=LEFT(TRIM(A2), FIND(" ", TRIM(A2)) - 1)Lấy phần trước dấu cách đầu tiên
C (Tên)=TRIM(RIGHT(SUBSTITUTE(TRIM(A2), " ", REPT(" ", 100)), 100))Lấy phần sau dấu cách cuối cùng
D (Tên Đệm)=TRIM(SUBSTITUTE(SUBSTITUTE(TRIM(A2), B2, ""), C2, ""))Loại bỏ họ và tên, còn lại là tên đệm

Lưu ý: Khi không có tên đệm, công thức ở cột D sẽ trả về chuỗi rỗng, không gây lỗi.

4. Cách 3: Hàm TEXTSPLIT (Excel 365/2026 trở lên)

Excel 365 giới thiệu hàm TEXTSPLIT cho phép tách chuỗi dựa trên một hoặc nhiều delimiter mà không cần lặp lại công thức.

4.1. Cú Pháp Cơ Bản

=TEXTSPLIT(TRIM(A2), " ")

Kết quả là một mảng trả về các phần tử: Họ Tên Đệm Tên. Nếu có nhiều tên đệm, các phần tử sẽ tự động mở rộng.

4.2. Trích Xuất Các Thành Phần Cụ Thể

Giả sử muốn đưa họ vào B2, tên vào C2, tên đệm (có thể có nhiều từ) vào D2:

=LET( arr, TEXTSPLIT(TRIM(A2), " "), n, COUNTA(arr), họ, INDEX(arr, 1), tên, INDEX(arr, n), tên_đệm, IF(n>2, TEXTJOIN(" ", TRUE, TAKE(arr, 2, n-2)), ""), CHOOSE({1,2,3}, họ, tên, tên_đệm)
)
  • LET giúp gán biến tạm, giảm tính toán lặp.
  • COUNTA(arr) đếm số phần tử.
  • TAKE(arr, 2, n-2) lấy các phần tử từ vị trí 2 tới n-2 (tên đệm).
  • TEXTJOIN nối lại tên đệm nếu có nhiều từ.

Kết quả: Khi công thức nhập vào B2, nó sẽ đổ giá trị vào B2, C2 và D2 đồng thời (đòi hỏi Excel hỗ trợ spill). Nếu không muốn spill, ta có thể tách từng công thức:

  • B2 (Họ): =INDEX(TEXTSPLIT(TRIM($A2), " "), 1)
  • C2 (Tên): =INDEX(TEXTSPLIT(TRIM($A2), " "), COUNTA(TEXTSPLIT(TRIM($A2), " ")))
  • D2 (Tên Đệm): =TEXTJOIN(" ", TRUE, FILTER(TEXTSPLIT(TRIM($A2), " "), SEQUENCE(COUNTA(TEXTSPLIT(TRIM($A2), " ")))>1, SEQUENCE(COUNTA(TEXTSPLIT(TRIM($A2), " ")))<COUNTA(TEXTSPLIT(TRIM($A2), " "))))

4.3. Ưu Điểm

  • Đơn giản, dễ đọc.
  • Tự động xử lý số lượng tên đệm thay đổi.
  • Không cần lồng ghép nhiều hàm.

Nhược điểm: Chỉ hoạt động trên Excel 365, Excel 2026 trở lên. Đối với các phiên bản cũ, phải dùng các hàm truyền thống hoặc Power Query.

5. Cách 4: Kết Hợp FILTERXML và SUBSTITUTE

Trước khi Excel có TEXTSPLIT, một thủ thuật thông minh là chuyển chuỗi thành XML, sau đó dùng FILTERXML để trích xuất các nút.

5.1. Tạo Chuỗi XML

=SUBSTITUTE(TRIM(A2), " ", "</x><x>")

Sau khi thay dấu cách bằng các thẻ <x>, chúng ta gói toàn bộ bằng một thẻ gốc:

="<root><x>" & SUBSTITUTE(TRIM(A2), " ", "</x><x>") & "</x></root>"

5.2. Dùng FILTERXML Để Lấy Các Thành Phần

Giả sử công thức trên được đặt trong ô B2 (hoặc dùng LET để gán biến). Để lấy họ (phần thứ nhất):

=FILTERXML(B2, "/root/x1")

Tên (phần cuối cùng):

=FILTERXML(B2, "/root/xlast()")

Tên đệm (các phần từ 2 tới last()-1):

=TEXTJOIN(" ", TRUE, FILTERXML(B2, "/root/xposition()>1 and position()<last()"))

5.3. Lợi Ích

Cách Tách Tên Trong Excel
Cách Tách Tên Trong Excel
  • Không phụ thuộc vào phiên bản (FILTERXML có từ Excel 2026).
  • Xử lý linh hoạt với số lượng từ thay đổi.

5.4. Hạn Chế

  • FILTERXML không hoạt động khi Excel ở chế độ 1904 date system? Thực tế, một số môi trường ngôn ngữ không hỗ trợ.
  • Không thể dùng trong Excel Online (do không hỗ trợ hàm XML).

6. Cách 5: Sử Dụng Power Query Để Tách Tên

Power Query (Get & Transform) là công cụ ETL mạnh mẽ tích hợp trong Excel 2026 trở lên, cho phép xử lý dữ liệu phức tạp mà không cần viết công thức.

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

  1. Chọn cột chứa họ và tên.
  2. Vào Data → From Table/Range (hoặc Get Data → From Table/Range).
  3. Nếu dữ liệu chưa ở dạng Table, Excel sẽ yêu cầu tạo Table – nhấn OK.

6.2. Tách Dữ Liệu Bằng “Split Column”

Trong Power Query Editor:

  1. Chọn cột Tên đầy đủ.
  2. Click Home → Split Column → By Delimiter.
  3. Chọn Space làm delimiter.
  4. Advanced options → Split at Each Occurrence of the Delimiter.
  5. Nhấn OK.

Power Query sẽ tạo các cột Tên đầy đủ.1, Tên đầy đủ.2, … tùy vào số từ trong mỗi ô.

6.3. Gộp Lại Thành Họ, Tên Đệm, Tên

Giả sử chúng ta có tối đa 4 phần (cột 1‑4). Thực hiện:

  • Họ: Tên đầy đủ.1
  • Tên: Tên đầy đủ.{Last} (cột cuối cùng).

Để lấy cột cuối cùng một cách động:

  1. Vào Add Column → Custom Column.
  2. Đặt tên Tên.
  3. Công thức:
= List.Last(Record.FieldValues(_))

Đối với Tên đệm, ta tạo cột mới:

= Text.Combine(List.RemoveItems(Record.FieldValues(_), {Record.FieldValues(_){0}, List.Last(Record.FieldValues(_))}), " ")

6.4. Xóa Các Cột Không Cần Thiết và Đóng Query

Sau khi có ba cột Họ, Tên Đệm, Tên, chọn Home → Close & Load để đưa dữ liệu trở lại Excel.

6.5. Ưu Điểm

  • Xử lý hàng triệu bản ghi mà không làm chậm Excel.
  • Tự động cập nhật khi dữ liệu nguồn thay đổi (refresh).
  • Không cần viết công thức, thân thiện với người không chuyên.

6.6. Nhược Điểm

  • Cần làm quen với giao diện Power Query.
  • Khi dữ liệu thay đổi cấu trúc (ví dụ thêm cột mới), có thể cần điều chỉnh lại các bước.

7. Cách 6: Macro VBA Tự Động Tách Họ, Tên Đệm, Tên

Với các file Excel cực lớn (hàng chục hoặc hơn 100.000 dòng), việc dùng công thức có thể làm chậm. Macro VBA cho phép thực thi nhanh hơn và lưu trữ kết quả dưới dạng giá trị.

7.1. Mã VBA Cơ Bản

Sub TachTen() Dim ws As Worksheet Dim rng As Range, cell As Range Dim arr() As String Dim lastRow As Long Set ws = ThisWorkbook.Sheets("Sheet1") ' Thay tên sheet tương ứng lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row Set rng = ws.Range("A2:A" & lastRow) ' Giả sử dữ liệu bắt đầu từ A2 Application.ScreenUpdating = False For Each cell In rng If Len(Trim(cell.Value)) > 0 Then arr = Split(Application.WorksheetFunction.Trim(cell.Value), " ") Dim cnt As Long: cnt = UBound(arr) + 1 ' Số phần tử ' Họ cell.Offset(0, 1).Value = arr(0) ' Tên cell.Offset(0, 3).Value = arr(cnt - 1) ' Tên đệm (nếu có) If cnt > 2 Then Dim i As Long, s As String For i = 1 To cnt - 2 s = s & arr(i) & " " Next i cell.Offset(0, 2).Value = Trim(s) Else cell.Offset(0, 2).Value = "" ' Không có tên đệm End If End If Next cell Application.ScreenUpdating = True MsgBox "Hoàn tất tách tên!", vbInformation
End Sub

Giải thích:

  • Split chia chuỗi dựa trên dấu cách.
  • arr(0) → họ.
  • arr(cnt-1) → tên.
  • Vòng lặp từ 1 tới cnt-2 tạo tên đệm (có thể nhiều từ).
  • Kết quả được ghi vào các cột B (họ), C (tên đệm), D (tên) tương ứng.

7.2. Cải Tiến Để Xử Lý Dấu Cách Thừa và Ký Tự Đặc Biệt

Thêm hàm Application.WorksheetFunction.Clean để loại bỏ ký tự không hiển thị, và Replace để thay đổi dấu cách liên tiếp thành một dấu cách:

Dim txt As String
txt = Application.WorksheetFunction.Trim(cell.Value)
txt = Application.WorksheetFunction.Clean(txt)
txt = WorksheetFunction.Substitute(txt, " ", " ")
arr = Split(txt, " ")

7.3. Gán Nút Thực Thi

  1. Vào Developer → Insert → Button (Form Control).
  2. Vẽ nút trên sheet, gán macro TachTen.
  3. Người dùng chỉ cần click để tách hết dữ liệu.

8. Xử Lý Các Trường Hợp Ngoại Lệ

8.1. Dấu Cách Thừa (Leading/Trailing/Multiple)

  • Công thức: TRIM(A2)
  • VBA: txt = Application.WorksheetFunction.Trim(txt)

8.2. Tên Đệm Nhiều Từ

Các công thức TEXTSPLIT và FILTERXML đã mô tả cách nối lại các từ ở vị trí giữa. Trong VBA, vòng lặp For i = 1 To cnt - 2 thực hiện việc này.

8.3. Ký Tự Đặc Biệt (apostrophe, dấu gạch ngang)

Hàm SUBSTITUTE có thể thay thế các ký tự không mong muốn:

=SUBSTITUTE(TRIM(A2), "’", "'") // Thay dấu ngoặc kép kiểu Unicode bằng apostrophe chuẩn

Trong VBA, dùng Replace(txt, "’", "'").

8.4. Tên Đầy Đủ Không Có Dấu Cách (Ví Dụ: “JohnDoe”)

Nếu không có dấu cách, công thức trên sẽ trả về lỗi. Cách giải quyết:

=IF(ISNUMBER(FIND(" ", A2)), <công thức tách>, A2) // Nếu không có dấu cách, trả về nguyên bản

Trong VBA:

If InStr(txt, " ") = 0 Then ' Không thể tách, sao chép nguyên bản cell.Offset(0, 1).Value = txt cell.Offset(0, 2).Value = "" cell.Offset(0, 3).Value = ""
Else ' Thực hiện tách như bình thường
End If

9. Kiểm Tra và Xác Nhận Kết Quả

Sau khi tách, chúng ta cần đảm bảo độ chính xác:

  1. Kiểm tra mẫu ngẫu nhiên: Chọn 10‑20 bản ghi, so sánh với dữ liệu gốc.
  2. Sử dụng Conditional Formatting để đánh dấu các ô trống bất thường (có thể thiếu tên đệm).
  3. Công thức: =LEN(B2)=0 (ánh đỏ nếu không có họ).
  4. Sử dụng hàm COUNTIF để đếm số lượng ô rỗng trong mỗi cột:
    excel =COUNTBLANK(B:B) // Đếm số ô không có họ
  5. Đối chiếu với danh sách chuẩn (nếu có) bằng VLOOKUP hoặc XLOOKUP để phát hiện sai sót.

Nếu phát hiện lỗi, quay lại bước làm sạch dữ liệu (TRIM, CLEAN) hoặc sửa công thức.

10. Mẹo Tối Ưu Hóa Và Tự Động Hóa Quy Trình

MẹoMô tảÁp dụng
Sử dụng TableĐặt dữ liệu vào Table (Ctrl+T) để công thức tự mở rộng khi thêm dòng mới.Công thức, Power Query, VBA
Dynamic ArraysKhi dùng TEXTSPLIT, kết quả sẽ spill tự động, không cần sao chép công thức xuống.Excel 365
Refresh tự động cho Power QueryData → Queries & Connections → Properties → Refresh every X minutes.Khi dữ liệu nguồn thay đổi thường xuyên
Ghi log trong VBAGhi số dòng đã xử lý vào một ô để người dùng biết tiến độ.Macro lớn
Sử dụng Named RangesĐặt tên cho cột nguồn (FullName) giúp công thức dễ đọc hơn.Công thức
Kiểm tra ngôn ngữĐối với dữ liệu tiếng Anh, dấu cách có thể là non‑breaking space (CHAR(160)). Dùng SUBSTITUTE(text, CHAR(160), " ").Dữ liệu đa ngôn ngữ

11. Kết Luận

Tách tên trong Excel không chỉ là một thao tác “cắt chuỗi” đơn thuần mà còn là kỹ năng xử lý dữ liệu quan trọng, ảnh hưởng trực tiếp đến chất lượng báo cáo, CRM, ERP và các hệ thống phân tích. Bài viết đã cung cấp:

  • Phương pháp nhanh (Text to Columns) cho dữ liệu đồng nhất.
  • Công thức truyền thống (LEFT, RIGHT, MID, FIND, LEN) cho người dùng muốn giữ dữ liệu trong sheet.
  • Công cụ hiện đại (TEXTSPLIT, FILTERXML) cho môi trường Office 365.
  • Giải pháp ETL với Power Query, thuận tiện cho quy trình tự động.
  • Macro VBA để xử lý siêu khối lượng dữ liệu mà công thức không đáp ứng.

Bạn chỉ cần đánh giá độ đồng nhất của dữ liệu, chọn công cụ phù hợp và thực hiện các bước đã trình bày. Khi áp dụng đúng, công việc tách tên sẽ trở nên nhanh chóng, chính xác và có thể tự động hoá trong mọi dự án.

Hãy thử ngay trên file thực tế của bạn, và nếu gặp bất kỳ khó khăn nào, đừng ngần ngại quay lại tài liệu này hoặc tìm kiếm thêm trên cộng đồng Excel – nơi tập hợp hàng ngàn chuyên gia sẵn sàng hỗ trợ. Chúc bạn thành công!

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