So sánh nội dung trong hai danh sách bằng VBA
Một trong những kỹ thuật thường dùng khi làm việc với đối tượng mảng trong VBA chính là việc chúng ta phải so sánh nội dung trong hai danh sách, hai mảng dữ liệu. Mục đích của việc so sánh là để tìm ra những đối tượng trùng, đối tượng không trùng. Vậy bạn sẽ làm cách nào để so sánh nội dung của 2 ...
Một trong những kỹ thuật thường dùng khi làm việc với đối tượng mảng trong VBA chính là việc chúng ta phải so sánh nội dung trong hai danh sách, hai mảng dữ liệu. Mục đích của việc so sánh là để tìm ra những đối tượng trùng, đối tượng không trùng. Vậy bạn sẽ làm cách nào để so sánh nội dung của 2 đanh sách? Sau đây Học Excel Online sẽ hướng dẫn bạn một vài cách nhé:
Ví dụ: Cho 2 danh sách như sau, so sánh nội dung trong danh sách 01 với danh sách 02 và lọc ra những nội dung có ở danh sách 01 mà không có trong danh sách 02
Cách 1: Sử dụng Hàm và lệnh Lọc dữ liệu
Bước 1: Tạo cột phụ và sử dụng hàm so sánh từng giá trị ở Danh sách 01 với cả Danh sách 02:
Hàm sử dụng là hàm COUNTIF: đếm theo điều kiện
Đếm trong Danh sách 02 từng giá trị của Danh sách 01 để xem có nội dung nào chưa xuất hiện
Như vậy ở cột C chúng ta có thể đếm được những giá trị:
- Kết quả > 0 tức là nội dung ở Danh sách 01 có xuất hiện trong Danh sách 02
- Kết quả = 0 tức là nội dung ở Danh sách 01 chưa xuất hiện trong Danh sách 02
Bước 2: Sử dụng Record Macro để ghi lại các thao tác lọc nội dung không trùng;
Trong tab Developer, chúng ta chọn chức năng Record Macro rồi thực hiện các thao tác như sau:
- Tạo Auto Filter cho 3 cột A, B, C
- Lọc các giá trị = 0 ở cột C
- Copy các kết quả lọc được ở cột A
- Dán vào ô E1 (chọn chức năng Paste Special > Value)
Chúng ta thu được dòng lệnh như sau:
Bước 3: Từ dòng lệnh trên, chúng ta có thể sửa lại cho code gọn hơn và thêm ghi chú cho từng thao tác như sau:
Như vậy chúng ta đã có được 1 lệnh lọc những nội dung không trùng giữa 2 danh sách rồi.
Câu lệnh trên có thể áp dụng tương tự cho những danh sách khác, chỉ cần sửa lại tọa độ và vị trí dán kết quả.
Cách 2: Sử dụng cách viết mảng trong VBA
Dưới đây là một câu lệnh thuần túy về xử lý đối tượng mảng trong VBA
Như vậy các bạn có thể sử dụng 1 trong 2 cách để lấy ra kết quả lọc
Cách 1 mất nhiều thao tác thủ công, tuy nhiên phù hợp với những ai mới học về VBA, muốn tìm hiểu cơ chế hoạt động của VBA và viết những dòng code đơn giản, rõ ràng.
Cách 2 xử lý nhanh gọn hơn nhưng sẽ khó hơn nếu bạn chưa biết về cách sử dụng mảng trong VBA. Vì vậy cách này chỉ phù hợp với những ai muốn nâng cao hơn về VBA, lập trình cấp cao hơn, đạt kết quả tối ưu hơn trong VBA so với cách 1
Tải về file mẫu: http://bit.ly/2skCRjd
Chúc các bạn học tốt cùng Học Excel Online