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.
Có thể bạn quan tâm: Tải Excel Về Máy Tính: Hướng Dẫn Chi Tiết, Lý Do Và Các Phương Pháp Hiệu Quả Nhất
Mục Lục
- Hiểu Rõ Dữ Liệu: Các Kiểu Định Dạng Tên Phổ Biến
- Cách 1: Sử Dụng Text to Columns (Văn Bản Thành Cột)
- Cách 2: Hàm Cơ Bản LEFT, RIGHT, MID, FIND, LEN
- Cách 3: Hàm TEXTSPLIT (Excel 365/2026 trở lên)
- Cách 4: Kết Hợp FILTERXML và SUBSTITUTE
- Cách 5: Sử Dụng Power Query Để Tách Tên
- Cách 6: Macro VBA Tự Động Tách Họ, Tên Đệm, Tên
- 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
- Kiểm Tra và Xác Nhận Kết Quả
- Mẹo Tối Ưu Hóa Và Tự Động Hóa Quy Trình
- Kết Luận
Có thể bạn quan tâm: Giảm Dung Lượng File Excel: Những Phương Pháp Hiệu Quả Và Thực Tiễ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ẫu | Ví dụ | Ghi chú |
|---|---|---|
| Mẫu 1 | Nguyễn Văn A | Họ (Nguyễn) + Tên đệm (Văn) + Tên (A) |
| Mẫu 2 | Trần Thị B | Họ (Trần) + Tên đệm (Thị) + Tên (B) |
| Mẫu 3 | Lê C | Chỉ có Họ (Lê) và Tên (C), không có tên đệm |
| Mẫu 4 | Phạm Thị Thu Hà | Họ (Phạm) + Nhiều từ tên đệm (Thị Thu) + Tên (Hà) |
| Mẫu 5 | Đỗ Dương D | Dấu cách thừa, cần làm sạch trước |
| Mẫu 6 | John Smith | Định dạng tiếng Anh, Họ (John) + Tên (Smith) |
| Mẫu 7 | O'Connor Michael | Ký 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
Có thể bạn quan tâm: Cách Chèn Ảnh Vào Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
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
- Chọn cột chứa họ và tên (ví dụ cột A).
- Vào Data → Text to Columns.
- Chọn Delimited → Next.
- Đá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.
- Click Next, chọn vị trí bắt đầu cột mới (ví dụ B, C, D).
- 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:
SUBSTITUTE(A2, " ", "@", LEN(A2)-LEN(SUBSTITUTE(A2," ","")))thay dấu cách cuối cùng bằng ký tự@.FIND("@", ...)tìm vị trí của@.LEN(A2) - vị trícho độ dài phần sau dấu cách cuối.RIGHTtrả 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ột | Công Thức | Mô 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)
)
LETgiú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ớin-2(tên đệm).TEXTJOINnố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ó thể bạn quan tâm: Cách Vẽ Biểu Đồ Trong Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
- 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ế
FILTERXMLkhô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
- Chọn cột chứa họ và tên.
- Vào Data → From Table/Range (hoặc Get Data → From Table/Range).
- 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:
- Chọn cột Tên đầy đủ.
- Click Home → Split Column → By Delimiter.
- Chọn Space làm delimiter.
- Advanced options → Split at Each Occurrence of the Delimiter.
- 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:
- Vào Add Column → Custom Column.
- Đặt tên
Tên. - 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:
Splitchia 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-2tạ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
- Vào Developer → Insert → Button (Form Control).
- Vẽ nút trên sheet, gán macro
TachTen. - 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:
- 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.
- Sử dụng Conditional Formatting để đánh dấu các ô trống bất thường (có thể thiếu tên đệm).
- Công thức:
=LEN(B2)=0(ánh đỏ nếu không có họ). - 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ọ - Đối chiếu với danh sách chuẩn (nếu có) bằng
VLOOKUPhoặcXLOOKUPđể 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ẹo | Mô 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 Arrays | Khi 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 Query | Data → Queries & Connections → Properties → Refresh every X minutes. | Khi dữ liệu nguồn thay đổi thường xuyên |
| Ghi log trong VBA | Ghi 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!

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ẻ.
