So sánh nội dung trong hai danh sách bằng VBA

Chia sẻ bởi:api_publisher
★★★★★
Quảng cáo

Tóm tắt: Hướng dẫn thực hành Excel, trình bày theo từng bước, có công thức mẫu và lưu ý áp dụng nhanh trong công việc.

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 SprinGo 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

So sánh nội dung trong hai danh sách bằng VBA

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ọc Nhân sự Tổng hợp – Trở thành chiến binh nhân sự vững nghiệp vụ
Khóa học SprinGO phù hợp

Học Nhân sự Tổng hợp – Trở thành chiến binh nhân sự vững nghiệp vụ

Con người là một trong những yếu tố quan trọng của công ty, là tài sản quý giá của doanh nghiệp. Chính vì thế,...

Xem khóa học

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

So sánh nội dung trong hai danh sách bằng VBA

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 SprinGo

★★★★★ 5 ★ 1 👤 0 ▥ 0
Quảng cáo

Bạn nên đọc

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm