Menu

Tự động hóa việc gom nhóm dữ liệu trùng lặp bằng VBA

Lục Thành Kiến 16/06/2026 13:13 390 lượt xem 3 trả lời

Chào các bác, dạo này em đang làm một báo cáo cần gom nhóm các dòng dữ liệu bị trùng lặp dựa trên một vài cột tiêu chí. File excel của em có hàng nghìn dòng nên làm thủ công rất mất thời gian và dễ sai sót. Em có tìm hiểu thì thấy VBA có thể giải quyết được vấn đề này.

Cụ thể, em muốn gom nhóm các dòng có Cột ACột B giống nhau. Khi gom nhóm, em muốn giữ lại dòng đầu tiên, còn các dòng trùng lặp phía sau sẽ được ẩn đi. Đồng thời, em muốn thêm một cột mới (ví dụ: Cột C) để đánh dấu số thứ tự của nhóm (ví dụ: 1, 2, 3... cho từng nhóm).

Em đã thử tìm kiếm trên mạng nhưng chưa thấy đoạn code nào thực sự phù hợp với yêu cầu của mình. Có bác nào có kinh nghiệm về vấn đề này có thể chia sẻ cho em một đoạn code mẫu hoặc hướng dẫn em cách tiếp cận không ạ?

Em xin cảm ơn!

5

Mình thấy cách bạn @Admin_VBA dùng Dictionary rất hay, xử lý nhanh gọn thật. Với yêu cầu gom nhóm dựa trên Cột A và Cột B, mình nghĩ có thể dùng thêm một mảng tạm để lưu trữ các cặp giá trị này.

Sau khi duyệt qua toàn bộ dữ liệu, ta sẽ lặp lại mảng đó. Với mỗi cặp giá trị, nếu nó đã xuất hiện trước đó, ta sẽ ẩn dòng tương ứng và đánh dấu số thứ tự vào Cột C. Cách này cũng giúp tránh việc phải sử dụng Dictionary nếu bạn chưa quen lắm.

Bạn đã thử cách nào chưa, hay muốn mình chia sẻ đoạn code mẫu về cách dùng mảng tạm này không?

5

Chào bạn,

Vấn đề bạn gặp phải khá phổ biến khi xử lý dữ liệu lớn. Việc tự động hóa gom nhóm dữ liệu trùng lặp bằng VBA là một giải pháp rất hiệu quả đấy.

Để thực hiện yêu cầu của bạn, bạn có thể tham khảo cách dùng Dictionary hoặc Collection trong VBA để lưu trữ các cặp giá trị từ Cột A và Cột B. Khi duyệt qua từng dòng, nếu cặp giá trị này đã tồn tại trong Dictionary/Collection, bạn đánh dấu dòng đó để ẩn đi và tăng biến đếm cho nhóm đó. Nếu chưa có, bạn thêm vào Dictionary/Collection và ghi số thứ tự vào Cột C.

Bạn có thể chia sẻ thêm về cấu trúc dữ liệu file của bạn không? Liệu có cột nào khác cần xem xét khi xác định trùng lặp không, hay chỉ Cột A và Cột B là đủ?

Chúc bạn thành công!

3

Chào bạn,

Vấn đề gom nhóm dữ liệu trùng lặp bằng VBA này mình cũng từng gặp và xử lý rồi. Cách dùng Dictionary là một hướng đi rất hay, nó giúp xử lý nhanh gọn và tối ưu bộ nhớ lắm.

Ngoài cách bạn ấy đề cập, mình còn thấy có thể dùng thêm phương pháp sắp xếp dữ liệu trước rồi duyệt qua từng hàng để so sánh. Với các dòng trùng lặp, mình sẽ đánh dấu lại và ẩn đi. Cột C để đánh số thứ tự liên tục cho từng nhóm cũng rất trực quan.

Không biết bạn đã thử cách nào rồi? Nếu cần code mẫu cho từng phương pháp thì cứ nói nhé, mình có thể chia sẻ thêm.

2

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

Đăng nhập Đăng ký