Menu

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

Châu Thị An 02/04/2026 16:55 401 lượt xem 2 trả lời

Chào các bác, dạo này em đang vật lộn với một mớ dữ liệu mà các thông tin cần tách ra lại nằm lộn xộn với đủ loại dấu phân cách khác nhau. Kiểu như có chỗ thì dấu phẩy, chỗ thì dấu chấm phẩy, có chỗ lại là dấu gạch ngang. Làm thủ công thì đúng là tốn thời gian kinh khủng.

Em có mò mẫm trên mạng và tìm ra một cách khá hay trong Power Query để xử lý vụ này mà không cần phải viết code M phức tạp. Đó là sử dụng kết hợp chức năng Split Column và một chút tùy chỉnh.

Cách làm cơ bản như sau:

  • Đầu tiên, chọn cột chứa chuỗi ký tự bạn muốn tách.
  • Vào tab Add Column, chọn Custom Column.
  • Trong cửa sổ Custom Column, bạn nhập một tên cột mới (ví dụ: 'TachChuoi').
  • Ở ô công thức, bạn dùng hàm Text.SplitAny. Hàm này cho phép bạn chỉ định một tập hợp các ký tự phân cách. Ví dụ, nếu bạn muốn tách theo dấu phẩy (,) và dấu chấm phẩy (;), bạn sẽ gõ: Text.SplitAny([TenCotGoc], {",", ";"}). Lưu ý là các ký tự phân cách phải nằm trong một danh sách (list).
  • Sau khi tạo xong cột mới, bạn sẽ thấy một cột chứa List. Bạn có thể nhấp vào biểu tượng mở rộng ở tiêu đề cột này để tách các phần tử trong List thành các cột riêng biệt.

Cách này rất tiện vì bạn không cần phải nghĩ ra trình tự các dấu phân cách. Power Query sẽ tự động xử lý dựa trên những gì bạn cung cấp.

Có bác nào có cách nào hay hơn hoặc gặp trường hợp phức tạp hơn với vụ tách chuỗi này không, chia sẻ cho anh em học hỏi với ạ!

5

Hay quá bạn ơi! Đúng là bài toán muôn thuở khi làm việc với dữ liệu "lộn xộn".

Cách bạn dùng kết hợp Split Column với tùy chỉnh như vậy rất hiệu quả, đỡ phải viết M code lằng nhằng thật. Mình cũng hay dùng cách này cho các trường hợp có một vài dấu phân cách cố định.

Không biết nếu trường hợp có rất nhiều dấu phân cách khác nhau, ví dụ như có thể là dấu phẩy, chấm phẩy, gạch ngang, dấu cách, hoặc thậm chí là ký tự đặc biệt, thì cách này có còn tối ưu không nhỉ? Hay mình cần "phức tạp hóa" thêm tí nữa?

2

Cảm ơn bạn đã chia sẻ cách làm này nhé! Đúng là gặp nhiều loại dấu phân cách khác nhau thì hơi đau đầu thật.

Mình cũng có một cách khác cũng khá hay, không cần chỉnh sửa nhiều ở bước Split Column. Bạn thử dùng hàm Text.Combine kết hợp với List.Distinct để gom các dấu phân cách lại thành một dấu chung trước khi tách xem sao. Cách này xử lý được nhiều kiểu dấu khác nhau mà vẫn giữ được sự đơn giản.

Ví dụ, nếu bạn có 1 cột chứa các dấu phân cách như ",", ";", "-", bạn có thể tạo một danh sách các dấu này, rồi dùng Text.Combine để biến chúng thành một dấu chung (ví dụ: ","), sau đó mới dùng Split Column by Delimiter với dấu chung đó.

Bạn đã thử cách này chưa? Hay có mẹo nào khác hiệu quả hơn thì chia sẻ thêm nha!

5

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

Đăng nhập Đăng ký