Hai năm làm việc với Excel, tôi vẫn dùng CONCATENATE và toán tử & để nối chuỗi. Công thức dài dằng dặc, ô trống tạo ra dấu phân cách thừa, mỗi lần sửa phải viết lại từ đầu. Cho đến khi phát hiện hàm TEXTJOIN trong Excel 2019, tôi mới nhận ra mình đã lãng phí bao nhiêu thời gian. Dưới đây là 5 cách dùng mà nếu biết sớm hơn, công việc đã dễ dàng hơn rất nhiều.

Nối chuỗi với dấu phân cách tự động
Trước đây, tôi nối họ tên bằng công thức dạng =A2&” “&B2&” “&C2. Với 10 cột thông tin địa chỉ, công thức trở thành chuỗi ký tự dài 200 ký tự. Mỗi lần thêm hoặc bớt trường dữ liệu phải sửa toàn bộ công thức.
Hàm TEXTJOIN giải quyết vấn đề này hoàn toàn. Cú pháp cơ bản:
=TEXTJOIN(dấu_phân_cách, bỏ_qua_ô_trống, văn_bản1, [văn_bản2], ...)
Các thành phần:
- dấu_phân_cách: Ký tự ngăn cách giữa các giá trị, đặt trong dấu ngoặc kép. Ví dụ: “, ” hoặc ” – ” hoặc “/”
- bỏ_qua_ô_trống: TRUE để bỏ qua ô trống, FALSE để giữ lại
- văn_bản1, văn_bản2: Các ô hoặc vùng ô cần nối
Ví dụ thực tế nối địa chỉ:
=TEXTJOIN(", ", TRUE, A2:E2)
Công thức này nối 5 trường địa chỉ (số nhà, đường, phường, quận, thành phố) bằng dấu phẩy. Nếu ô B2 (tên đường) bị để trống, kết quả vẫn đẹp: “123, Phường 1, Quận 10, TP.HCM” thay vì “123, , Phường 1, Quận 10, TP.HCM”.
Tôi áp dụng ngay vào bảng dữ liệu khách hàng 3000 dòng. Thời gian xử lý giảm từ 2 giờ xuống 15 phút. Công thức chỉ cần kéo xuống, không phải sửa từng dòng khi thêm trường mới.
Xử lý ô trống thông minh với tham số bỏ_qua_ô_trống
Đây là điểm khác biệt lớn nhất so với CONCATENATE. Khi nối dữ liệu không đầy đủ, CONCATENATE tạo ra kết quả xấu với nhiều dấu phân cách liên tiếp.
So sánh hai phương pháp:
Dữ liệu mẫu trong A2:D2:
- A2: Nguyễn Văn
- B2: (trống)
- C2: An
- D2: (trống)
Với CONCATENATE:
=A2&" "&B2&" "&C2&" "&D2
Kết quả: “Nguyễn Văn An ” (nhiều khoảng trắng thừa)
Với TEXTJOIN:
=TEXTJOIN(" ", TRUE, A2:D2)
Kết quả: “Nguyễn Văn An” (sạch sẽ)
Khi nào dùng FALSE:
Tham số thứ hai là FALSE hữu ích khi bạn cần giữ vị trí của ô trống. Ví dụ nối mã sản phẩm theo format cố định:
=TEXTJOIN("-", FALSE, A2:E2)
Nếu B2 và D2 trống, kết quả: “A001–C003–E005”. Các dấu gạch ngang giữ đúng vị trí, giúp phân tích dữ liệu về sau.
Tôi sử dụng TRUE cho 95 phần trăm trường hợp. Chỉ dùng FALSE khi làm việc với mã code có cấu trúc cố định.
Kết hợp với hàm IF để lọc dữ liệu theo điều kiện
Đây là kỹ thuật mạnh nhất tôi học được. TEXTJOIN có thể nhận mảng kết quả từ hàm IF, cho phép nối chỉ những giá trị thỏa mãn điều kiện.
Bài toán thực tế:
Bảng dữ liệu học sinh có cột Họ Tên (A2:A16), Môn Học (B2:B16), Điểm (C2:C16). Yêu cầu: Liệt kê tên các học sinh đạt điểm trên 8, phân cách bằng dấu phẩy.
Công thức:
=TEXTJOIN(", ", TRUE, IF(C2:C16>8, A2:A16, ""))
Cách hoạt động:
- IF(C2:C16>8, A2:A16, “”) kiểm tra từng điểm
- Nếu điểm > 8, trả về tên học sinh
- Nếu không, trả về chuỗi rỗng
- TEXTJOIN nối các tên thỏa mãn, bỏ qua chuỗi rỗng
Lưu ý quan trọng:
- Excel 365 và Excel 2021: Nhập công thức bình thường, nhấn Enter
- Excel 2019: Nhập công thức, nhấn Ctrl + Shift + Enter để tạo công thức mảng
Dấu hiệu công thức mảng thành công: Excel tự động thêm dấu ngoặc nhọn {=TEXTJOIN…} ở thanh công thức.
Nâng cao với nhiều điều kiện:
Lọc học sinh điểm Toán trên 8 VÀ điểm Văn trên 7:
=TEXTJOIN(", ", TRUE, IF((C2:C16>8)*(D2:D16>7), A2:A16, ""))
Dấu * hoạt động như toán tử AND. Cả hai điều kiện phải đúng thì học sinh mới được liệt kê.
Tôi áp dụng kỹ thuật này để tạo báo cáo tổng hợp từ bảng dữ liệu 5000 dòng. Thay vì lọc thủ công, một công thức cho ra danh sách khách hàng tiềm năng trong 2 giây.
Nối toàn bộ dải ô nhanh chóng
Đối với dải dữ liệu dọc dài, TEXTJOIN nhanh hơn gấp 10 lần so với CONCATENATE.
Tình huống thực tế:
Cột A có 50 tên thành phố cần gộp thành một ô, phân cách bằng dấu chấm phẩy.
Cách cũ với CONCATENATE:
=CONCATENATE(A2,"; ",A3,"; ",A4,"; ",...,A51)
Phải gõ 50 tham số, mất 5 phút.
Cách mới với TEXTJOIN:
=TEXTJOIN("; ", TRUE, A2:A51)
Mất 5 giây.
Ứng dụng thực tế:
- Gộp danh sách sản phẩm thành mô tả
- Tạo tags từ nhiều từ khóa
- Nối mã code từ nhiều nguồn
- Xuất dữ liệu sang format CSV
Giới hạn duy nhất: Chuỗi kết quả tối đa 32.767 ký tự. Nếu vượt quá, TEXTJOIN trả về lỗi #VALUE!. Trong thực tế, tôi chưa từng gặp giới hạn này với dữ liệu văn bản thông thường.
Tạo dấu phân cách xuống dòng trong cùng một ô
Kỹ thuật này cực kỳ hữu ích khi tạo danh sách hiển thị trong một ô, nhưng ít người biết.
Cách thực hiện:
Sử dụng CHAR(10) làm dấu phân cách để xuống dòng:
=TEXTJOIN(CHAR(10), TRUE, A2:A10)
CHAR(10) là mã ký tự xuống dòng trong Excel. Kết quả sẽ hiển thị mỗi giá trị trên một dòng riêng trong cùng một ô.
Điều kiện bắt buộc:
Để xuống dòng hiển thị đúng, bạn phải bật Wrap Text cho ô chứa công thức:
- Chọn ô chứa công thức
- Trang chủ > Căn chỉnh > Wrap Text
- Hoặc nhấn Alt + H + W
Ví dụ tạo to-do list:
Dữ liệu công việc trong A2:A6:
- Kiểm tra email
- Họp với khách hàng
- Viết báo cáo
- Gọi điện cho đối tác
- Cập nhật tiến độ
Công thức:
=TEXTJOIN(CHAR(10), TRUE, A2:A6)
Kết quả trong một ô:
Kiểm tra email
Họp với khách hàng
Viết báo cáo
Gọi điện cho đối tác
Cập nhật tiến độ
Nâng cao với số thứ tự:
Thêm số thứ tự tự động trước mỗi dòng:
=TEXTJOIN(CHAR(10), TRUE, "1. Kiểm tra email", "2. Họp với khách hàng", "3. Viết báo cáo")
Hoặc kết hợp với các ô:
=TEXTJOIN(CHAR(10), TRUE, "• "&A2, "• "&A3, "• "&A4, "• "&A5, "• "&A6)
Kết quả với dấu đầu dòng:
• Kiểm tra email
• Họp với khách hàng
• Viết báo cáo
• Gọi điện cho đối tác
• Cập nhật tiến độ
Tôi dùng kỹ thuật này để tạo ghi chú tổng hợp trong dashboard. Thay vì nhiều ô rời rạc, tất cả thông tin quan trọng gom lại một ô, dễ theo dõi.
Tương thích và giải pháp cho phiên bản cũ hơn
Hàm TEXTJOIN chỉ có sẵn trong:
- Excel 2019 (Windows và Mac)
- Excel 2021
- Microsoft 365 (subscription)
Kiểm tra nhanh:
Gõ =TEXTJOIN vào thanh công thức. Nếu Excel hiển thị gợi ý cú pháp, bạn có hàm này. Nếu không, Excel trả về lỗi #NAME?.
Giải pháp cho Excel 2016 và cũ hơn:
Nếu không có TEXTJOIN, bạn có 3 lựa chọn:
- Nâng cấp lên Microsoft 365: Giải pháp tốt nhất, có tất cả hàm mới
- Dùng CONCATENATE với cấu trúc phức tạp: Chậm hơn nhiều, không xử lý được ô trống tốt
- Tạo hàm tùy chỉnh bằng VBA: Yêu cầu kiến thức lập trình, file phải lưu dạng .xlsm
Nếu làm việc với nhiều file cùng nhóm, kiểm tra phiên bản Excel của mọi người trước khi dùng TEXTJOIN. File có TEXTJOIN mở bằng Excel 2016 sẽ hiển thị lỗi.
Thay thế tạm thời:
Với trường hợp đơn giản (ít hơn 5 ô, không có ô trống), dùng toán tử &:
=A2&", "&B2&", "&C2
Với nhiều ô hoặc có ô trống, tốt nhất là nâng cấp Excel hoặc yêu cầu IT cài đặt Office 365.
Những sai lầm phổ biến cần tránh
Lỗi 1: Quên dấu ngoặc kép cho dấu phân cách
Sai: =TEXTJOIN(, , TRUE, A2:A10) Đúng: =TEXTJOIN(“, “, TRUE, A2:A10)
Dấu phân cách phải là chuỗi văn bản trong dấu ngoặc kép. Nếu muốn không có dấu phân cách, dùng “”.
Lỗi 2: Nhập TRUE/FALSE không đúng
Sai: =TEXTJOIN(“, “, Đúng, A2:A10) Đúng: =TEXTJOIN(“, “, TRUE, A2:A10)
Excel yêu cầu TRUE hoặc FALSE bằng tiếng Anh, viết hoa. Không dùng Đúng/Sai hoặc 1/0.
Lỗi 3: Vượt quá giới hạn 32.767 ký tự
Nếu nối quá nhiều dữ liệu, Excel trả về #VALUE!. Giải pháp: Chia nhỏ thành nhiều công thức TEXTJOIN riêng biệt, sau đó nối các kết quả lại.
Lỗi 4: Không nhấn Ctrl + Shift + Enter trong Excel 2019
Khi kết hợp TEXTJOIN với IF, Excel 2019 yêu cầu công thức mảng. Nếu chỉ nhấn Enter, công thức không hoạt động. Excel 365 và 2021 không cần bước này nhờ Dynamic Arrays.
Kết hợp TEXTJOIN với các hàm khác để tăng sức mạnh
TEXTJOIN + UNIQUE (Excel 365):
Loại bỏ giá trị trùng lặp trước khi nối:
=TEXTJOIN(", ", TRUE, UNIQUE(A2:A20))
Nếu cột A có 5 giá trị “Hà Nội”, kết quả chỉ hiển thị “Hà Nội” một lần.
TEXTJOIN + FILTER (Excel 365):
Lọc và nối trong một công thức:
=TEXTJOIN(", ", TRUE, FILTER(A2:A20, B2:B20>100))
Chỉ nối các giá trị trong cột A khi cột B lớn hơn 100.
TEXTJOIN + TEXT:
Định dạng số trước khi nối:
=TEXTJOIN(" - ", TRUE, TEXT(A2:A5, "#,##0"))
Nối các số với định dạng ngăn cách hàng nghìn. Ví dụ: “1,000 – 2,500 – 3,750”.
TEXTJOIN + REPT:
Tạo biểu đồ đơn giản bằng ký tự:
=TEXTJOIN(CHAR(10), TRUE, A2&": "&REPT("█", B2))
Hiển thị thanh ngang với độ dài tương ứng giá trị trong cột B.
Những kết hợp này giúp tôi xử lý dữ liệu phức tạp mà trước đây phải dùng nhiều bước hoặc VBA. Một công thức thay thế cả quy trình.
Khi nào không nên dùng TEXTJOIN
Hàm này mạnh nhưng không phải lúc nào cũng là lựa chọn tốt nhất.
Tránh dùng TEXTJOIN khi:
- Nối ít hơn 3 giá trị đơn giản: Toán tử & nhanh hơn và rõ ràng hơn
=A2&" "&B2 (tốt hơn =TEXTJOIN(" ", TRUE, A2, B2)) - Cần performance cao với file lớn: TEXTJOIN với mảng và IF tính toán chậm hơn so với Power Query
- Chia sẻ file với người dùng Excel cũ: File sẽ lỗi trên Excel 2016 trở về trước
- Nối dữ liệu động cập nhật liên tục: Power Query hoặc Python xử lý tốt hơn với dữ liệu streaming
Tôi vẫn dùng CONCATENATE hoặc & cho các công thức nhanh với 2-3 ô. Chỉ chuyển sang TEXTJOIN khi số lượng ô nhiều hoặc cần tính năng bỏ qua ô trống.
Mẹo tăng tốc độ làm việc với TEXTJOIN
Mẹo 1: Đặt tên cho vùng dữ liệu
Thay vì =TEXTJOIN(“, “, TRUE, A2:A100), đặt tên “DanhSachThanhPho” cho A2:A100:
=TEXTJOIN(", ", TRUE, DanhSachThanhPho)
Dễ đọc hơn, dễ sửa hơn khi dữ liệu mở rộng.
Cách đặt tên:
- Chọn vùng A2:A100
- Nhấn Ctrl + Shift + F3
- Hoặc gõ tên vào Name Box (bên trái thanh công thức)
Mẹo 2: Lưu template công thức
Tạo sheet riêng chứa các công thức TEXTJOIN mẫu với chú thích. Khi cần, copy và sửa tham số. Tiết kiệm 70 phần trăm thời gian so với viết lại từ đầu.
Mẹo 3: Kết hợp với Data Validation
Dùng danh sách thả xuống cho dấu phân cách:
=TEXTJOIN(D1, TRUE, A2:A10)
D1 chứa Data Validation với options: “, “, ” – “, ” | “, CHAR(10). Thay đổi dấu phân cách chỉ cần chọn từ dropdown, không sửa công thức.
Tương lai của TEXTJOIN trong Excel
Microsoft liên tục cải thiện các hàm xử lý chuỗi. Trong Excel 365, TEXTJOIN đã hoạt động mượt mà hơn với Dynamic Arrays. Không cần Ctrl + Shift + Enter, công thức tự động xử lý mảng.
Xu hướng đáng chú ý:
Python trong Excel (preview 2023) cung cấp thư viện Pandas với join operations mạnh hơn. Với dữ liệu phức tạp, Python có thể thay thế TEXTJOIN trong tương lai. Nhưng với 95 phần trăm tác vụ thông thường, TEXTJOIN vẫn là lựa chọn nhanh nhất.
Nếu bạn đang dùng Excel 2019 trở lên, đầu tư thời gian thành thạo TEXTJOIN hoàn toàn xứng đáng. Năm kỹ thuật trên tiết kiệm cho tôi khoảng 4 giờ mỗi tuần. Áp dụng ngay từ hôm nay, bạn sẽ thấy hiệu quả rõ rệt trong vòng một tuần làm việc.
