Menu

Tự động tách chuỗi ký tự phức tạp với nhiều dấu phân cách trong Power Query

Nhữ Tây Đắc 08/04/2026 06:22 264 lượt xem 3 trả lời

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
SP005

Nế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:

  1. Chọn cột chứa chuỗi ký tự cần tách.
  2. Vào tab Transform, chọn Split Column -> By Delimiter.
  3. 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.
  4. Chọn Split intoRows để 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!

3

Hay quá bạn ơi! Vấn đề tách chuỗi này đúng là đau đầu thật, đặc biệt là khi có nhiều dấu phân cách khác nhau như vậy. Cách bạn dùng Power Query để xử lý đúng là một giải pháp rất thông minh.

Mình cũng hay gặp trường hợp tương tự. Thay vì phải dùng các hàm Text phức tạp trong Excel, giờ có Power Query rồi thì nhẹ nhàng hơn hẳn. Bạn có thể chia sẻ thêm về bước "chuẩn hóa" các dấu phân cách trước khi tách không? Mình tò mò muốn biết bạn xử lý mấy loại dấu khác nhau đó như thế nào cho gọn gàng.

0

Hay quá bạn ơi! Vấn đề tách chuỗi này đúng là đau đầu thật, đặc biệt là khi có nhiều dấu phân cách khác nhau như vậy. Cách bạn dùng Power Query để xử lý đúng là một giải pháp rất thông minh.

Mình cũng hay gặp trường hợp tương tự. Thay vì phải dùng các hàm Text phức tạp trong Excel, giờ có Power Query rồi thì nhẹ nhàng hơn hẳn. Bạn có thể chia sẻ thêm về bước "chuẩn hóa" các dấu phân cách trước khi tách không? Mình tò mò muốn biết bạn xử lý mấy loại dấu khác nhau đó như thế nào cho gọn gàng.

3

Chào bạn,

Rất vui khi cách xử lý chuỗi của mình hữu ích với bạn. Về phần chuẩn hóa dấu phân cách, mình thường dùng hàm Text.Replace lồng nhau hoặc tạo một danh sách các dấu cần thay thế và lặp qua để thay thế tất cả về một loại dấu chung (ví dụ: dấu phẩy).

Nếu bạn muốn tối ưu hơn nữa, có thể xem xét việc tạo một hàm tùy chỉnh (custom function) để thực hiện bước này. Cách này giúp code sạch sẽ và dễ bảo trì hơn.

Cảm ơn bạn đã quan tâm!

3

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

Đăng nhập Đăng ký