Menu

Hỗ trợ tách chuỗi ký tự theo điều kiện động trong Excel

Yên Hiệp Lam 08/04/2026 03:05 159 lượt xem 1 trả lời

Chào mọi người,

Mình đang gặp một vấn đề khá nan giải trong quá trình xử lý dữ liệu trên Excel. Mình có một cột dữ liệu chứa các chuỗi ký tự, và mình muốn tách các chuỗi này ra thành các cột riêng biệt. Tuy nhiên, điểm khó ở đây là ký tự phân tách không cố định mà thay đổi tùy theo từng dòng.

Ví dụ:

Dòng 1: Apple-Banana-Cherry

Dòng 2: Orange/Grape/Mango

Dòng 3: Strawberry;Blueberry;Raspberry

Mình đã thử dùng chức năng Text to Columns nhưng nó chỉ hoạt động tốt khi ký tự phân tách là cố định. Mình cũng đã thử dùng các hàm như LEFT, RIGHT, MID kết hợp với FIND hoặc SEARCH, nhưng với việc ký tự phân tách thay đổi, việc viết công thức trở nên rất phức tạp và khó quản lý, đặc biệt là khi số lượng ký tự phân tách trong một dòng có thể thay đổi.

Có ai có kinh nghiệm hoặc biết cách nào để xử lý trường hợp này một cách hiệu quả không? Có thể là một công thức kết hợp nhiều hàm, hoặc một cách dùng VBA nào đó?

Mình rất mong nhận được sự giúp đỡ từ các cao thủ Excel trong diễn đàn.

Cảm ơn mọi người!

5

Chào bạn,

Vấn đề này mình cũng từng gặp và hơi đau đầu tìm cách xử lý. Với trường hợp ký tự phân tách không cố định như vậy, chức năng Text to Columns thông thường đúng là hơi bất tiện thật.

Bạn thử dùng hàm TRIM và SUBSTITUTE kết hợp xem sao. Đầu tiên, mình sẽ dùng SUBSTITUTE để thay thế tất cả các ký tự phân tách khác nhau (-, /, ;) bằng một ký tự chung, ví dụ là dấu phẩy (,). Sau đó, dùng hàm TRIM để loại bỏ khoảng trắng thừa (nếu có) và cuối cùng là dùng Text to Columns với dấu phẩy làm ký tự phân tách là được.

Ví dụ, nếu dữ liệu của bạn ở cột A, bạn có thể tạo một cột phụ với công thức:

=TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"/","|"),"-","|"),";","|"))

(Ở đây mình dùng dấu "|" tạm thời để tránh xung đột với dấu phẩy nếu nó có trong chuỗi gốc, sau đó mới thay "|" bằng dấu phẩy).

Hy vọng cách này giúp ích cho bạn!

0

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký