Chuyển đến nội dung chính

Excel TEXTJOIN(): Kết hợp văn bản trong Excel

Kết hợp giá trị ô thật mượt với TEXTJOIN(). Xử lý dấu phân tách, bỏ qua ô trống và đơn giản hóa việc lắp ghép dữ liệu trong Excel.
· 6 phút đọc

Khám phá cùng AI

Tạo văn bản được định dạng tốt từ dữ liệu Excel là nhu cầu phổ biến, nhưng ghép chuỗi giá trị có thể trở nên lộn xộn. Hàm TEXTJOIN() của Excel mang đến một giải pháp đơn giản, cho phép bạn gom các phạm vi văn bản lại với nhau bằng một dấu phân tách và thậm chí bỏ qua các ô trống. 

Trong bài viết này, tôi sẽ hướng dẫn các kiến thức cơ bản về TEXTJOIN(), so sánh nó với các hàm tương tự như CONCAT() và CONCATENATE(), và đi qua những tình huống thực tế nơi nó phát huy tác dụng. Trong suốt bài, tôi sẽ đưa ra lý lẽ ủng hộ TEXTJOIN() vì tôi tin đây hiện là công cụ tốt hơn để kết hợp văn bản, và tôi nghĩ rằng đến cuối bài bạn cũng sẽ bị thuyết phục.

Cách hoạt động của Excel TEXTJOIN()

Trước hết, hãy làm rõ TEXTJOIN() thực sự làm gì và vì sao cú pháp của nó linh hoạt hơn nhiều so với trước đây.

Cốt lõi của TEXTJOIN() là cho phép bạn nối các giá trị văn bản từ nhiều ô, chèn một dấu phân tách (như dấu phẩy, khoảng trắng, hoặc chấm phẩy) giữa chúng. Khác với cách cũ, nó có thể xử lý cả một phạm vi cùng lúc, và bạn có thể quyết định có bỏ qua ô trống hay không.

Cú pháp như sau:

=TEXTJOIN(delimiter, ignore_empty, text1, [text2], ...)
  • delimiter: Ký tự (hoặc chuỗi ký tự) bạn muốn đặt giữa mỗi phần văn bản (thường là dấu phẩy, khoảng trắng, v.v.)

  • ignore_empty: TRUE để bỏ qua ô trống, FALSE để bao gồm chúng

  • text1, [text2], …: Các ô, phạm vi, hoặc giá trị bạn muốn kết hợp

Ví dụ, giả sử bạn có các giá trị ở A1, A2 và A3. Bạn muốn nối chúng, phân tách bằng dấu phẩy và bỏ qua ô trống:

=TEXTJOIN(",", TRUE, A1:C1)

Excel TEXTJOIN while skipping blanks

Nếu A2 rỗng, bạn sẽ chỉ nhận các giá trị từ A1 và A3, được phân tách bằng dấu phẩy.

Tại sao điều này quan trọng? Các hàm khác (tôi đang nghĩ đến CONCATENATE()) bắt bạn liệt kê từng ô riêng lẻ, và chúng không bỏ qua ô trống. TEXTJOIN() ngắn gọn hơn khi nhập và dễ bảo trì hơn nhiều.

TEXTJOIN() so với CONCATENATE() và CONCAT()

Giờ chúng ta đã nắm các điểm cơ bản của TEXTJOIN(), đáng để xem nó so sánh trực tiếp với các hàm văn bản cũ của Excel như thế nào. Nếu bạn đã dùng CONCATENATE() hoặc CONCAT(), có thể bạn đang tự hỏi vì sao nên chuyển sang dùng cái khác.

  • TEXTJOIN(): Cho phép bạn chỉ định dấu phân tách và dễ dàng bỏ qua ô trống. Chấp nhận phạm vi.

  • CONCAT(): Nối phạm vi hoặc các ô văn bản riêng lẻ, nhưng bạn không thể chỉ định dấu phân tách. Không bỏ qua ô trống.

  • CONCATENATE(): Tùy chọn lâu đời nhất. Buộc bạn chỉ định từng ô một. Không có trường dấu phân tách, không hỗ trợ phạm vi.

Ví dụ, hãy nối các giá trị ở B1, B2 và B3 với chấm phẩy giữa mỗi giá trị. Đây là cách các hàm khác nhau trông như thế nào:

=TEXTJOIN(";", TRUE, A1:C1)

Excel TEXTJOIN with a semicolon

=CONCAT(B1:D1)

Excel TEXTJOIN vs CONCAT

=CONCATENATE(B1, C1, D1)

Excel TEXTJOIN vs CONCATENATE

Hãy lưu ý rằng chỉ TEXTJOIN() cho phép bạn chọn dấu phân tách mà không cần rườm rà. Với CONCAT() hoặc CONCATENATE(), nếu muốn có dấu phân tách, bạn sẽ phải thêm thủ công như sau:

=B1 & ";" & C1 & ";" & D1

manually adding in delimiters

Ngoài ra, và có lẽ cũng quan trọng không kém, tùy vào cách cấu trúc dữ liệu của bạn, nếu có ô nào trống, TEXTJOIN() có thể bỏ qua giúp bạn. CONCATENATE() và CONCAT() sẽ bao gồm cả ô trống.

Xử lý dấu phân tách và ô trống

Cho phép tôi nói kỹ hơn về hai điểm đau phổ biến này: thêm dấu phân tách nhất quán và bỏ qua ô trống.

Dấu phân tách tùy chỉnh

Bạn có thể muốn các dấu phân tách khác nhau cho các trường hợp khác nhau. Bạn có thể cần dấu phẩy, dấu gạch dọc, xuống dòng, hoặc thậm chí các ký tự khác làm dấu tách.

Để nối bằng dấu gạch dọc, dùng công thức này:

=TEXTJOIN("|", TRUE, D1:G1)

Excel TEXTJOIN with a vertical bar

Bạn cũng có thể làm những thứ đặc thù hơn. Ở đây, tôi dùng khoảng trắng-gạch ngang-khoảng trắng làm dấu phân tách:

=TEXTJOIN(" - ", TRUE, D1:G1)

Excel TEXTJOIN with hyphens

Bạn thậm chí có thể dùng CHAR(10) để xuống dòng, dù bạn sẽ cần bật Wrap Text trong định dạng ô để thấy hiệu ứng.

Bỏ qua ô trống

Một trong những điều khó chịu nhất khi lắp ghép dữ liệu là xử lý ô trống. TEXTJOIN() trao quyền kiểm soát cho bạn. Đặt đối số ignore_empty thành TRUE, và các ô trống sẽ bị loại bỏ hoàn toàn.

=TEXTJOIN(", ", TRUE, E1:G1)

Excel TEXTJOIN skipping blanks

Kết quả: “Red, Blue”. Ô trống (F2) bị bỏ qua, nên bạn sẽ không có dấu phẩy thừa.

Nếu bạn đặt ignore_empty là FALSE:

=TEXTJOIN(", ", FALSE, E1:G1)

Excel TEXTJOIN forgetting to skip blanks

Giờ kết quả là: “Red, , Blue”. Dấu phẩy thừa khá nổi bật (và thường không phải điều bạn muốn). Theo kinh nghiệm của tôi, TRUE thường là tốt nhất.

Tất cả những điều này có vẻ nhỏ, nhưng nếu bạn luyện tập hàm này một chút, bạn sẽ tiết kiệm thời gian làm sạch sau xử lý.

Xây dựng danh sách và nhãn động

Giờ bạn đã thấy những điều cơ bản, hãy khám phá cách TEXTJOIN() có thể giải quyết vấn đề. Tôi sẽ tập trung vào hai kịch bản bạn dễ gặp: tạo bản tóm tắt động và lắp ghép nhãn từ dữ liệu biến đổi.

Tạo tóm tắt từ đầu vào của người dùng

Giả sử bạn đang thu thập phản hồi khảo sát nơi người dùng trả lời Yes/No cho một tập câu hỏi tùy chọn. Chỉ một số sẽ trả lời, nên kết quả rải rác từ F1 đến J1. 

Nếu bạn muốn chỉ liệt kê các câu hỏi họ trả lời “Yes”, bạn có thể dùng TEXTJOIN() kết hợp với IF() và FILTER() (với mảng động trong các phiên bản Excel mới hơn).

Giả sử G1:G5 chứa văn bản câu hỏi, F1:F5 chứa Yes/No tương ứng:

=TEXTJOIN(", ", TRUE, FILTER(F2:J2, F1:J1="Yes"))

Excel TEXTJOIN combined with FILTER

Giờ đây ô kết quả sẽ chỉ liệt kê các câu hỏi người dùng trả lời “Yes”, ngăn cách bằng dấu phẩy.

Nếu bạn không có mảng động, bạn có thể tạo một cột phụ chỉ xuất văn bản câu hỏi khi câu trả lời là Yes, sau đó nối phạm vi trợ giúp đó bằng TEXTJOIN().

Tạo nhãn tùy chỉnh từ dữ liệu biến đổi

Hãy tưởng tượng bạn đang chuẩn bị nhãn giao hàng từ một bảng, trong đó một số trường (như “Apartment” hoặc “Suite”) đôi khi để trống. Bạn muốn nối các thành phần địa chỉ thành một dòng duy nhất.

Nếu địa chỉ của bạn nằm ở H1 (“123 Main St”), H2 (“Apt 4B” hoặc trống), H3 (“Springfield”), H4 (“IL”), H5 (“62704”), bạn sẽ dùng:

=TEXTJOIN(", ", TRUE, H1:L1)

Excel TEXTJOIN with flexibility for blank cells

Nếu H2 trống, đầu ra của bạn vẫn gọn gàng (không có dấu phẩy kép!) vì TEXTJOIN() bỏ qua ô trống.

Đây là những ví dụ phổ biến, nhưng logic tương tự áp dụng cho bất kỳ nơi nào bạn đang gộp dữ liệu với các trường tùy chọn hoặc điều kiện bao gồm.

Những điều khác cần lưu ý

Dù TEXTJOIN() rất tiện lợi, vẫn có một vài điểm nhỏ:

Dùng nhiều phạm vi với TEXTJOIN()

Một điều cần biết về TEXTJOIN() là cách nó xử lý nhiều phạm vi. Bạn có thể truyền vào nhiều phạm vi ngay cả khi chúng không liền kề nhau, miễn là bạn liệt kê chúng riêng biệt:

=TEXTJOIN(", ", TRUE, B1:D1, B2:D2)

Excel TEXTJOIN with a non-contiguous range

Điều này hoạt động hoàn toàn ổn. Excel sẽ kết hợp các giá trị từ cả hai phạm vi và nối chúng lại. Chỉ cần nhớ: Bạn không thể viết chúng thành một mảng đơn như (A1:A3,C1:C3). Bạn cần liệt kê mỗi phạm vi như một đối số riêng.

Lồng hàm và mảng động

Nếu bạn dùng TEXTJOIN() như một phần của công thức mảng động (như với UNIQUE() hoặc FILTER()), hãy nhớ rằng dấu phân tách và đối số ignore_empty vẫn phải là các giá trị đơn. Dùng mảng ở đó sẽ trả về lỗi #VALUE!.

Dấu phân tách và định dạng cuối cùng

Đôi khi, bạn không muốn dấu phân tách (bạn chỉ muốn dồn mọi văn bản vào với nhau). Hãy đặt dấu phân tách là "" (nghĩa là chuỗi rỗng):

=TEXTJOIN("", TRUE, A1:C1)

Excel TEXTJOIN with no delimiter

Chỉ cần lưu ý: nếu bạn bỏ qua dấu phân tách, bạn sẽ mất lợi thế chính của hàm này so với CONCAT().

Nếu bạn muốn tạo danh sách để dùng ngoài Excel (như tải lên CSV), hãy chú ý đến khoảng trắng thừa, ngắt dòng ngoài ý muốn, hoặc mã hóa ký tự (đặc biệt nếu bạn dùng ký hiệu hoặc Unicode).

Các hàm liên quan và kỹ thuật nâng cao

Khi bạn đã quen với TEXTJOIN(), bạn có thể bắt đầu tự hỏi nó phù hợp thế nào với các hàm “động” khác của Excel. Thường thì, kết hợp nó với UNIQUE(), FILTER() hoặc SORT() sẽ khiến nó còn mạnh mẽ hơn.

Ví dụ, giả sử bạn muốn nối tất cả danh mục sản phẩm duy nhất từ một danh sách:

=TEXTJOIN(", ", TRUE, UNIQUE(TRANSPOSE(A1:E1)))

Lưu ý: UNIQUE() theo mặc định định hướng theo cột trong Excel. Vì tôi đang làm việc với một hàng, tôi cũng phải dùng TRANSPOSE().

Hoặc, bạn chỉ muốn những giá trị thỏa một điều kiện nhất định:

=TEXTJOIN(", ", TRUE, FILTER(A1:C1, A2:C2="Active"))

Cả hai ví dụ đều cho thấy TEXTJOIN() có thể tóm tắt hoặc báo cáo dữ liệu mà không cần cột phụ hay lọc thủ công.

Kết luận

Nếu bạn vẫn đang dùng CONCATENATE() hoặc tự ghép các ô lại với nhau, chuyển sang TEXTJOIN() sẽ giúp bạn tiết kiệm thời gian. (Tôi cam đoan!)

Ngoài ra, tôi muốn bổ sung rằng học TEXTJOIN() giúp bạn quen với tư duy theo phạm vi. Đây là tư duy đem lại lợi ích khi bạn dùng các hàm mảng động của Excel và những phương pháp hiện đại khác hơn. Hãy tham gia khóa Advanced Excel Functions của chúng tôi để tiếp tục học hỏi.

Josef Waples

Tác giả

Josef Waples

Tôi là một cây bút và biên tập viên về khoa học dữ liệu, đã có bài đóng góp cho các nghiên cứu đăng trên tạp chí khoa học. Tôi đặc biệt quan tâm đến đại số tuyến tính, thống kê, R và các chủ đề tương tự. Tôi cũng chơi cờ vua khá thường xuyên! 

Chủ đề

Liên quan