Chào các bạn trong diễn đàn,
Mình có một tình huống xử lý chuỗi ký tự khá 'hóc búa' và muốn chia sẻ cách mình đã giải quyết bằng Power Query, hy vọng hữu ích cho anh em nào đang gặp vấn đề tương tự.
Chuyện là mình có một cột dữ liệu chứa các mã sản phẩm, nhưng các mã này được phân cách bởi rất nhiều loại dấu khác nhau, không chỉ có dấu phẩy (,) mà còn có cả dấu chấm phẩy (;), gạch ngang (-), và thậm chí là xuống dòng. Ví dụ:
SP001,SP002;SP003-SP004
SP005Nếu chỉ có một loại dấu phân cách thì dùng chức năng 'Split Column by Delimiter' của Power Query là xong. Nhưng với trường hợp này, mình đã thử vài cách:
- Cách 1 (Không hiệu quả): Thử thay thế lần lượt các dấu phân cách khác về cùng một loại dấu rồi mới tách. Cách này khá thủ công và dễ sai sót nếu dấu phân cách quá đa dạng.
- Cách 2 (Hiệu quả): Sử dụng kết hợp các hàm xử lý chuỗi của Power Query.
Đây là các bước mình đã thực hiện:
- Chọn cột chứa chuỗi ký tự cần tách.
- Vào tab Transform, chọn Split Column -> By Delimiter.
- Trong hộp thoại hiện ra, ở ô Select or enter delimiter, mình nhập lần lượt các dấu phân cách mà mình muốn xử lý, ví dụ: `,`, `;`, `-`, ` `. Power Query cho phép nhập nhiều dấu cách nhau bằng dấu xuống dòng hoặc dấu phẩy.
- Chọn Split into là Rows để mỗi mã sản phẩm nằm trên một dòng riêng.
Kết quả là mình đã tách được các mã sản phẩm ra thành từng dòng riêng biệt, rất sạch sẽ. Phương pháp này rất linh hoạt và xử lý được nhiều trường hợp phức tạp mà không cần viết M code phức tạp.
Chúc mọi người thành công!