Menu

App script quản lý rủi ro cho cá nhân & doanh nghiệp với báo cáo chuẩn định dạng biểu đồ

Xử lý dữ liệu dạng danh sách lồng nhau (Nested Lists) trong Excel

Lâm Nhi Công 07/04/2026 14:00 316 lượt xem 2 trả lời

Chào các anh chị em trong diễn đàn,

Dạo này mình hay gặp phải tình huống dữ liệu đầu vào nó không được 'sạch' cho lắm, đặc biệt là các danh sách mà các mục lại được phân tách bằng ký tự đặc biệt hoặc nằm trong một ô duy nhất. Ví dụ như thế này:

Dữ liệu: 'Táo, Chuối, Cam; Dứa, Xoài; Ổi'

Trong ví dụ trên, chúng ta có 3 nhóm trái cây, nhưng mỗi nhóm lại được ngăn cách bởi dấu chấm phẩy (;), còn các trái cây trong cùng nhóm thì ngăn cách bằng dấu phẩy (,).

Mình đã thử dùng Text to Columns nhưng nó chỉ xử lý được một lớp phân tách thôi. Nếu có nhiều lớp phân tách như vậy thì khá là mệt.

Gần đây, mình có tìm hiểu và áp dụng Power Query để xử lý triệt để vấn đề này. Cách làm của mình như sau:

  • Bước 1: Load dữ liệu vào Power Query.
  • Bước 2: Dùng chức năng 'Split Column' để tách theo dấu chấm phẩy (;) trước. Chọn 'Advanced options' và tick vào 'Split to Rows'.
  • Bước 3: Sau khi tách, mỗi nhóm trái cây sẽ nằm trên một dòng riêng. Bây giờ, tiếp tục dùng 'Split Column' cho cột chứa các trái cây, chọn dấu phẩy (,) làm dấu phân tách. Lần này, chúng ta có thể chọn 'Split to Columns' hoặc 'Split to Rows' tùy theo nhu cầu phân tích.
  • Bước 4: Cuối cùng, làm sạch các khoảng trắng thừa nếu có và load kết quả trở lại Excel.

Cách này giúp mình xử lý được các cấu trúc dữ liệu phức tạp mà trước đây rất mất thời gian. Có anh chị em nào có cách khác hiệu quả hơn hoặc có kinh nghiệm xử lý dạng dữ liệu này không, chia sẻ cho mình với ạ?

Cảm ơn mọi người đã đọc bài!

0

Chào bạn,

Vấn đề dữ liệu lồng nhau này đúng là đau đầu thật! Mình cũng từng gặp trường hợp tương tự. Với cấu trúc dữ liệu bạn đưa ra, Text to Columns có vẻ hơi "đuối" vì nó chỉ xử lý một cấp phân tách thôi.

Bạn đã thử dùng kết hợp hàm SUBSTITUTETRIM để "chuẩn hóa" trước khi dùng Text to Columns chưa? Hoặc có thể dùng Power Query để xử lý trực tiếp, cái này mạnh hơn nhiều cho các bài toán tách dữ liệu phức tạp.

Bạn có thể chia sẻ thêm về cách bạn đã thử với Text to Columns không, để mọi người cùng xem và góp ý thêm ạ?

0

Dữ liệu dạng danh sách lồng nhau này đúng là thử thách thật! Mình có một cách khác cũng khá hiệu quả, đó là dùng kết hợp FILTERXML với SUBSTITUTE.

Đầu tiên, bạn có thể dùng SUBSTITUTE để thay thế dấu chấm phẩy (;) thành một thẻ XML, ví dụ . Sau đó, dùng SUBSTITUTE tiếp để thay dấu phẩy (,) thành dấu phẩy thông thường, rồi mới bọc thẻ xung quanh. Cuối cùng, dùng FILTERXML để trích xuất từng phần tử.

Cách này có vẻ hơi "vòng vo" một chút nhưng xử lý khá gọn gàng cho các trường hợp phân tách nhiều cấp. Bạn thử xem sao nhé!

2

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

Đăng nhập Đăng ký