Excel Concat String With Separator: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao

Giới thiệu chung

Trong môi trường làm việc với dữ liệu, Microsoft Excel luôn là công cụ không thể thiếu. Một trong những thao tác phổ biến nhưng lại gây ra không ít khó khăn cho người dùng là ghép (concatenate) các chuỗi ký tự với một ký tự ngăn cách (separator). Dù bạn đang xử lý danh sách khách hàng, mã sản phẩm, địa chỉ email, hay muốn tạo ra các mã định danh duy nhất, việc ghép chuỗi một cách linh hoạt, hiệu quả và có thể tùy chỉnh separator là rất quan trọng.

Bài viết này sẽ đi sâu vào mọi khía cạnh của việc ghép chuỗi trong Excel, từ các hàm truyền thống như CONCATENATE, & cho đến các hàm hiện đại như TEXTJOIN, CONCAT và các kỹ thuật sử dụng VBA. Chúng tôi sẽ cung cấp:

  • Giải thích chi tiết cách hoạt động của từng hàm.
  • Ví dụ thực tế minh hoạ từng trường hợp.
  • Mẹo tối ưu để xử lý dữ liệu lớn, tránh lỗi trùng lặp hoặc khoảng trắng thừa.
  • So sánh hiệu năng giữa các phương pháp.
  • Cách áp dụng trong các tình huống thực tiễn như tạo email tự động, mã QR, hay chuẩn hoá dữ liệu.

Sau khi đọc xong, bạn sẽ nắm vững mọi kỹ thuật cần thiết để ghép chuỗi với separator trong Excel một cách nhanh chóng, chính xác và linh hoạt.

1. Tổng quan về ghép chuỗi trong Excel

1.1. Tại sao cần separator?

Khi ghép nhiều giá trị lại với nhau, việc phân tách chúng bằng một ký tự đặc biệt (dấu phẩy, dấu chấm phẩy, dấu gạch ngang, v.v.) giúp:

  • Đọc dễ dàng: Người dùng có thể nhanh chóng nhận ra các phần tử riêng biệt.
  • Xử lý dữ liệu: Các công cụ khác (SQL, Python, Power Query) thường dựa vào separator để tách lại dữ liệu.
  • Định dạng chuẩn: Ví dụ, danh sách địa chỉ email phải được ngăn cách bằng dấu chấm phẩy trong Outlook.

1.2. Các hàm ghép chuỗi truyền thống

HàmCú phápĐặc điểm
CONCATENATE=CONCATENATE(text1, text2, …)Không hỗ trợ separator tự động, cần dùng & hoặc CHAR(10).
& (Toán tử nối)=A1 & B1Cú pháp ngắn gọn, nhưng không có tùy chọn bỏ qua ô trống.
TEXT=TEXT(value, format_text)Dùng để định dạng số trước khi ghép.

1.3. Hàm mới trong Office 365 / Excel 2026+

HàmCú phápƯu điểm
CONCAT=CONCAT(text1, text2, …)Thay thế CONCATENATE, hỗ trợ mảng.
TEXTJOIN=TEXTJOIN(delimiter, ignore_empty, text1, text2, …)Cho phép đặt separator và bỏ qua ô trống.
IFS—Không liên quan trực tiếp, nhưng hữu ích trong điều kiện ghép.

Trong phần tiếp theo, chúng ta sẽ đánh giá chi tiết từng hàm, tập trung vào TEXTJOIN vì đây là hàm mạnh nhất cho yêu cầu “concat string with separator”.

2. Sử dụng hàm TEXTJOIN – Giải pháp toàn diện

2.1. Cú pháp và các tham số

=TEXTJOIN(delimiter, ignore_empty, text1, text2, …)
  • delimiter: Ký tự hoặc chuỗi ký tự dùng làm separator (ví dụ: ",", "; ", " - ").
  • ignore_empty: TRUE để bỏ qua các ô trống, FALSE để giữ lại (sẽ tạo ra separator thừa nếu có ô trống).
  • text1, text2, …: Các giá trị hoặc phạm vi cần ghép.

Lưu ý: TEXTJOIN chấp nhận mảng nên bạn có thể truyền trực tiếp một phạm vi như A1:A10.

2.2. Ví dụ cơ bản

Giả sử cột A chứa tên, cột B chứa họ, cột C chứa tuổi. Bạn muốn tạo một chuỗi “Họ, Tên (Tuổi)”.

A (Tên)B (Họ)C (Tuổi)
AnNguyễn28
BìnhTrần35
HồngLê

Công thức:

=TEXTJOIN(" ", TRUE, B2, A2, "(" & C2 & ")")

Kết quả:
– Dòng 2: Nguyễn An (28)
– Dòng 3: Trần Bình (35)
– Dòng 4: Lê Hồng () → Nhờ ignore_empty = TRUE, không tạo dấu phẩy thừa.

2.3. Ghép danh sách nhiều hàng thành một chuỗi

Bạn muốn liệt kê tất cả email trong cột D, ngăn cách bằng dấu chấm phẩy (;). Dữ liệu:

D (Email)
a@example.com
b@example.com
(ô trống)
c@example.com

Công thức:

=TEXTJOIN("; ", TRUE, D2:D5)

Kết quả: a@example.com; b@example.com; c@example.com

2.4. Bỏ qua giá trị trùng lặp

Excel không có hàm tích hợp để loại bỏ trùng lặp trong TEXTJOIN, nhưng chúng ta có thể kết hợp với UNIQUE (có trong Office 365).

=TEXTJOIN(", ", TRUE, UNIQUE(D2:D10))

Kết quả sẽ là danh sách duy nhất, mỗi giá trị chỉ xuất hiện một lần.

2.5. Xử lý khoảng trắng thừa

Nếu dữ liệu có khoảng trắng ở đầu/cuối, TEXTJOIN sẽ giữ nguyên. Để làm sạch, dùng TRIM:

=TEXTJOIN(", ", TRUE, TRIM(A2:A10))

Nếu muốn áp dụng TRIM cho toàn bộ mảng, cần dùng hàm MAP (Excel 365):

=TEXTJOIN(", ", TRUE, MAP(A2:A10, LAMBDA(x, TRIM(x))))

2.6. Khi ignore_empty = FALSE

Nếu bạn muốn giữ lại vị trí trống (ví dụ, để tạo một định dạng cố định), đặt ignore_empty là FALSE:

=TEXTJOIN("|", FALSE, A2:A5)

Nếu A3 trống, kết quả sẽ có || ở vị trí tương ứng, hữu ích khi cần định dạng cố định cho các hệ thống nhập liệu.

2.7. Hiệu năng và giới hạn

  • Số lượng đối số: TEXTJOIN có thể nhận tới 255 đối số, hoặc một phạm vi mảng.
  • Độ dài chuỗi: Excel cho phép chuỗi tối đa 32.767 ký tự trong một ô. Khi ghép danh sách lớn, cần kiểm tra không vượt quá giới hạn này.
  • Tốc độ: TEXTJOIN nhanh hơn việc lặp lại & trong các vòng lặp, đặc biệt khi xử lý hàng ngàn dòng.

3. Hàm CONCAT – Khi không cần separator

CONCAT là phiên bản nâng cấp của CONCATENATE, nhưng không hỗ trợ separator. Tuy nhiên, bạn có thể kết hợp với TEXTJOIN để tạo separator tùy chỉnh:

Excel Concat String With Separator
Excel Concat String With Separator
=TEXTJOIN("-", TRUE, CONCAT(A2:C2))

Trong trường hợp dữ liệu đã được định dạng sẵn (không cần separator), CONCAT là lựa chọn ngắn gọn:

=CONCAT(A2, B2, C2)

4. Sử dụng toán tử & – Cách truyền thống nhưng linh hoạt

4.1. Cú pháp cơ bản

=A2 & ", " & B2 & " - " & C2

4.2. Kết hợp với IF để bỏ qua ô trống

=IF(A2="", "", A2 & ", ") & IF(B2="", "", B2 & " - ") & C2

Mặc dù độ phức tạp tăng lên khi có nhiều cột, nhưng đối với công thức ngắn và phiên bản Excel cũ, & vẫn hữu dụng.

4.3. Vấn đề khoảng trắng và lỗi

  • Khi một trong các ô trống, bạn sẽ có separator thừa (ví dụ: , ,). Cần dùng IF để kiểm soát.
  • & không tự động bỏ qua lỗi #N/A. Dùng IFERROR để bảo vệ:
=IFERROR(A2, "") & ", " & IFERROR(B2, "")

5. Ghép chuỗi bằng VBA – Khi công thức không đủ

5.1. Khi nào cần VBA?

  • Xử lý hàng triệu dòng: Công thức có thể chậm, VBA chạy nhanh hơn khi sử dụng mảng.
  • Yêu cầu tùy biến phức tạp: Ví dụ, ghép chuỗi dựa trên nhiều tiêu chí, hoặc tạo file CSV tự động.
  • Tự động hóa: Khi muốn ghép và lưu kết quả vào file văn bản, email, hay cơ sở dữ liệu.

5.2. Mã VBA mẫu: CONCATENATE WITH SEPARATOR

Function JoinRange(rng As Range, _ Optional delimiter As String = ", ", _ Optional ignoreEmpty As Boolean = True) As String Dim arr As Variant Dim i As Long Dim result As String arr = rng.Value For i = LBound(arr, 1) To UBound(arr, 1) If Not ignoreEmpty Or Trim(arr(i, 1)) <> "" Then If result <> "" Then result = result & delimiter result = result & arr(i, 1) End If Next i JoinRange = result
End Function

Cách dùng trong ô Excel:

=JoinRange(A2:A10, "; ", TRUE)

5.3. Tối ưu tốc độ

  • Đọc dữ liệu vào mảng (arr = rng.Value) thay vì lặp qua từng ô.
  • Tránh Select/Activate.
  • Sử dụng Application.ScreenUpdating = False khi chạy macro lớn.

5.4. Ghi kết quả ra file văn bản

Sub ExportJoinedString() Dim joined As String joined = JoinRange(Sheet1.Range("A2:A1000"), vbTab, True) Dim fso As Object, txt As Object Set fso = CreateObject("Scripting.FileSystemObject") Set txt = fso.CreateTextFile("C:\Temp\joined.txt", True, True) txt.Write joined txt.Close
End Sub

6. Ứng dụng thực tiễn

6.1. Tạo danh sách email cho Outlook

  1. Chuẩn bị: Cột A – Họ, B – Tên, C – Domain (ví dụ @company.com).
  2. Công thức:
=TEXTJOIN("; ", TRUE, A2:A100 & "." & B2:B100 & C2:C100)
  1. Kết quả: nguyen.an@company.com; tran.binh@company.com; …

6.2. Tạo mã sản phẩm duy nhất

Giả sử bạn có mã nhóm ở cột A, số thứ tự ở cột B, và muốn ghép bằng dấu gạch ngang.

=TEXTJOIN("-", TRUE, A2, TEXT(B2, "0000"))

Kết quả: GRP-0012

6.3. Định dạng địa chỉ cho bản in

Cột A – Địa chỉ, B – Phường, C – Quận, D – Thành phố. Separator là dấu phẩy và khoảng trắng.

=TEXTJOIN(", ", TRUE, A2, B2, C2, D2)

6.4. Chuẩn hoá dữ liệu nhập khẩu

Khi nhận file CSV từ đối tác, các trường có thể được ngăn cách bằng |. Để đưa lại vào Excel dưới dạng cột riêng, dùng TEXTSPLIT (Excel 365) ngược lại: TEXTJOIN để tái hợp:

=TEXTJOIN("|", TRUE, FILTERXML("<t><s>" & SUBSTITUTE(A2, "|", "</s><s>") & "</s></t>", "//s"))

7. So sánh các phương pháp

Phương phápĐộ linh hoạtXử lý ô trốngHiệu năng (hàng ngàn)Hỗ trợ Excel cũGhi chú
TEXTJOINRất cao (separator, ignore_empty)Có tùy chọnNhanh (sử dụng mảng)Không (Office 365/2026+)Giải pháp mặc định hiện nay
CONCATTrung bình (không separator)KhôngNhanhKhông (Office 365/2026+)Dùng khi không cần separator
& + IFCao (có thể tùy chỉnh)Phải tự lập trìnhChậm khi nhiều hàngCóDành cho Excel 2003‑2026
VBA JoinRangeRất cao (tùy chỉnh, ghi file)CóRất nhanh (mảng)Có (có macro)Cần bật macro, bảo mật
Power QueryCao (xử lý dữ liệu lớn)CóRất nhanhCó (Excel 2026+)Thích hợp ETL, không trực tiếp trong ô

8. Các lỗi thường gặp và cách khắc phục

LỗiNguyên nhânGiải pháp
#VALUE!Dữ liệu không phải dạng văn bản (ví dụ: lỗi #N/A hoặc ngày)Dùng IFERROR hoặc TEXT để chuyển đổi.
Chuỗi quá dàiTổng ký tự > 32.767Giảm số lượng trường, hoặc chia thành nhiều ô.
Separator thừaignore_empty = FALSE và có ô trốngĐặt TRUE hoặc dùng IF để loại bỏ.
Khoảng trắng thừaDữ liệu có space ở đầu/cuốiÁp dụng TRIM hoặc CLEAN.
Không nhận hàm TEXTJOINPhiên bản Excel cũSử dụng & hoặc viết VBA.

9. Tips và thủ thuật nâng cao

  1. Ghép đa chiều: Khi cần ghép cả hàng và cột, dùng TRANSPOSE kết hợp TEXTJOIN.

excel =TEXTJOIN(", ", TRUE, TRANSPOSE(A1:D1))

(Nhấn Ctrl+Shift+Enter trong Excel trước 365 để nhập công thức mảng.)

  1. Ghép có định dạng màu: Excel không hỗ trợ định dạng trong công thức, nhưng bạn có thể tạo Conditional Formatting dựa trên nội dung đã ghép.

  2. Sử dụng LET để giảm lặp (Excel 365):

excel =LET(rng, A2:A10, delim, "; ", TEXTJOIN(delim, TRUE, rng))

  1. Kết hợp với FILTER để ghép chỉ những giá trị thỏa mãn điều kiện:

excel =TEXTJOIN(", ", TRUE, FILTER(A2:A100, B2:B100="Active"))

  1. Tự động cập nhật khi dữ liệu thay đổi: Đặt công thức trong Table (Ctrl+T) để khi thêm hàng mới, công thức tự mở rộng.

10. Kết luận

Việc ghép chuỗi với separator trong Excel không còn là thách thức khó vượt. Từ các hàm cổ điển (CONCATENATE, &) tới các hàm hiện đại (TEXTJOIN, CONCAT) và giải pháp VBA, bạn có thể lựa chọn công cụ phù hợp nhất dựa trên:

  • Phiên bản Excel đang sử dụng.
  • Số lượng dữ liệu cần xử lý.
  • Yêu cầu về tính năng (bỏ qua ô trống, loại bỏ trùng lặp, định dạng đặc biệt).

Hãy nhớ rằng:

  • TEXTJOIN là lựa chọn ưu tiên cho hầu hết các trường hợp hiện đại.
  • & + IF là giải pháp nhanh cho các tệp Excel cũ.
  • VBA mở ra khả năng tự động hoá và xử lý dữ liệu quy mô lớn.
  • Power Query (Get & Transform) cung cấp một môi trường ETL mạnh mẽ khi làm việc với dữ liệu từ nhiều nguồn.

Hy vọng bài viết này đã cung cấp cho bạn toàn bộ kiến thức cần thiết để trở thành “bậc thầy” trong việc ghép chuỗi với separator trong Excel. Hãy thử áp dụng ngay vào dự án thực tế của mình và chia sẻ kết quả nhé!

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