So sánh 2 cột thông qua VBA trong Microsoft Excel
Trong trường hợp bạn đang thắc mắc làm thế nào để so sánh 2 cột dữ liệu có hàng triệu và trích xuất giá trị duy nhất giữa cả 2 cột thì bạn nên đọc bài viết này. Chúng tôi sẽ sử dụng mã VBA để so sánh hai cột dữ liệu và hiển thị sự khác biệt trong hai cột tiếp theo.
Câu hỏi: Có nhiều giá trị tồn tại trong cột A và B. Tôi muốn macro kiểm tra hơn 40 k hàng dữ liệu trong cả hai cột và sau đó trích xuất danh sách các mục nhập duy nhất từ mỗi cột vào cột tiếp theo tức là cột C & D tương ứng. Trong ví dụ này, tôi chỉ lấy 40 hàng dữ liệu mẫu.
Bạn có thể tìm câu hỏi ban đầu http://www.excelforum.com/excel-programming-vba-macros/1094194-compare-data-in-columns-a-and-b-show-differences-in-columns-c-and -d.html [tại đây]
Sau đây là ảnh chụp nhanh dữ liệu:
===
Để so sánh danh sách hai cột, chúng ta cần làm theo các bước sau để khởi chạy trình soạn thảo VB:
Nhấp vào tab Nhà phát triển Từ nhóm Mã chọn Visual Basic
-
Sao chép đoạn mã dưới đây trong mô-đun chuẩn
Sub PullUniques() Dim rngCell As Range For Each rngCell In Range("A2:A40") If WorksheetFunction.CountIf(Range("B2:B40"), rngCell) = 0 Then Range("C" & Rows.Count).End(xlUp).Offset(1) = rngCell End If Next For Each rngCell In Range("B2:B40") If WorksheetFunction.CountIf(Range("A2:A40"), rngCell) = 0 Then Range("D" & Rows.Count).End(xlUp).Offset(1) = rngCell End If Next End Sub
-
Macro trên đã được thiết lập để chạy; hoặc chúng ta có thể nhấn phím F5 – nếu bạn hiện đang ở trong Màn hình trình soạn thảo Visual Basic –hoặc chúng ta có thể sử dụng phím tắt “ALT + F8”, chọn macro của bạn và nhấp vào nút chạy
-
Danh sách duy nhất từ các cột A & B sẽ được tạo tự động trong các cột C & D
Giải thích mã:
Trong đoạn mã trên, chúng ta sẽ sử dụng hàm IF cùng với vòng lặp For để lấy kết quả.
Chúng tôi khai báo Dim rngCell As Range; mục đích của việc khai báo rngCell As Range là chúng ta muốn gán phạm vi mẫu “A2: A40” với một tên cụ thể, tức là “rngCell” trong ví dụ For Each rngCell In Range (“A2: A40”); chúng tôi sẽ kiểm tra từng ô trong “rngCell” với điều kiện If WorksheetFunction.CountIf (Range (“B2: B40”), rngCell) = 0 Sau đó; dòng mã này đang sử dụng hàm COUNTIF VBA để kiểm tra phạm vi tiêu chí B2: B40 với tiêu chí rngCell bằng 0, sau đó trong cột C, giá trị được lưu trữ trong rngCell sẽ được lưu Tương tự, chúng ta sẽ chạy For Each Loop cho cột B & giải nén các giá trị duy nhất trong cột D Kết luận: Chúng ta có thể nhận được danh sách văn bản hoặc giá trị duy nhất từ mỗi cột; tên tiêu đề của cột C (Kết quả – Tồn tại trong Danh sách 1 nhưng không có trong Danh sách 2) & cột D (Kết quả – Tồn tại trong Danh sách 2 nhưng không tồn tại trong Danh sách 1). Trong trường hợp chúng ta có yêu cầu tương tự nhưng số lượng cột nhiều hơn hai thì chúng ta cần điều chỉnh mã để có được kết quả.
Nếu bạn thích blog của chúng tôi, hãy chia sẻ nó với bạn bè của bạn trên Facebook. Và bạn cũng có thể theo dõi chúng tôi trên Twitter và Facebook.
Chúng tôi rất muốn nghe ý kiến của bạn, hãy cho chúng tôi biết cách chúng tôi có thể cải thiện, bổ sung hoặc đổi mới công việc của mình và làm cho nó tốt hơn cho bạn. Viết thư cho chúng tôi theo địa chỉ [email protected]