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], ...)Được hỗ trợ bởi
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:
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:
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:
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.
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.
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"))Được hỗ trợ bởi
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:
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:
Đ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):
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)))Được hỗ trợ bởi
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 hỗ trợ bởi
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.
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!
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:
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úngtext1, [text2], …: Các ô, phạm vi, hoặc giá trị bạn muốn kết hợpVí 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:
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ùngCONCATENATE()hoặcCONCAT(), 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:
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ớiCONCAT()hoặcCONCATENATE(), nếu muốn có dấu phân tách, bạn sẽ phải thêm thủ công như sau: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:
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:
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_emptythànhTRUE, và các ô trống sẽ bị loại bỏ hoàn toàn.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_emptylàFALSE: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,
TRUEthườ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ớiIF()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:
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:
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:Đ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ớiUNIQUE()hoặcFILTER()), hãy nhớ rằng dấu phân tách và đối sốignore_emptyvẫ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):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ớiUNIQUE(),FILTER()hoặcSORT()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:
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:
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 sangTEXTJOIN()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.