Chào mọi người,
Mình thường xuyên phải làm việc với dữ liệu mà trong một ô lại chứa nhiều thông tin, ví dụ như danh sách tên nhiều người, hoặc danh sách các mã sản phẩm. Việc này gây khó khăn khi cần phân tích hoặc lọc dữ liệu.
Trước đây mình hay dùng chức năng 'Text to Columns' nhưng đôi khi nó không linh hoạt lắm, đặc biệt khi dấu phân cách không cố định hoặc có nhiều dấu phân cách xen kẽ.
Gần đây, mình tìm hiểu và áp dụng được một cách khá hiệu quả để xử lý các trường hợp này bằng cách kết hợp các hàm xử lý chuỗi như SUBSTITUTE, TRIM và TEXTSPLIT (nếu dùng Excel 365).
Ví dụ, nếu dữ liệu của mình nằm ở ô A1 với định dạng 'Tên 1, Tên 2; Tên 3', mình có thể xử lý như sau:
=TEXTSPLIT(SUBSTITUTE(A1, ';', ','), , ',')Nếu không có TEXTSPLIT, có thể dùng mảng động hoặc các công thức mảng khác để tách ra từng giá trị. Tuy nhiên, cách này đòi hỏi kiến thức về mảng khá sâu.
Cách đơn giản hơn nếu không dùng TEXTSPLIT là dùng Power Query, nó xử lý rất gọn gàng. Các bạn có thể vào tab Data -> Get Data -> From Other Sources -> From Table/Range, sau đó chọn cột cần xử lý, vào tab Transform -> Split Column -> By Delimiter. Power Query sẽ tự động nhận diện các dấu phân cách và cho phép bạn tách thành nhiều cột hoặc nhiều dòng.
Cách này rất hữu ích khi bạn cần chuẩn hóa dữ liệu trước khi đưa vào PivotTable hoặc các phân tích khác.
Mọi người có kinh nghiệm hay cách xử lý nào khác hiệu quả hơn không, chia sẻ để mọi người cùng học hỏi nhé!