Trận đấu VBA | Làm thế nào để sử dụng hàm đối sánh trong VBA Excel? (Ví dụ)

Tương tự như chúng ta có Index và Match trong trang tính dưới dạng các hàm tra cứu, chúng ta cũng có thể sử dụng các hàm Match trong VBA như một hàm tra cứu, hàm này là một hàm trang tính và nó được ứng dụng truy cập. phương thức trang tính và vì nó là một hàm trang tính nên các đối số cho hàm Khớp tương tự như hàm trang tính.

Hàm đối sánh VBA

Hàm Match VBA tìm kiếm vị trí hoặc số hàng của giá trị tra cứu trong mảng bảng tức là trong bảng excel chính.

Trong một trang tính, các hàm tra cứu là một phần không thể thiếu của excel. Một số hàm tra cứu quan trọng là VLOOKUP, HLOOKUP, INDEX và MATCH. Thật không may, chúng tôi không có các chức năng này như các chức năng VBA. Tuy nhiên, chúng ta có thể sử dụng chúng như các hàm trang tính trong VBA.

Trong bài viết này, chúng tôi sẽ giới thiệu cho các bạn cách sử dụng một trong các hàm tra cứu bảng tính MATCH trong VBA làm hàm trang tính.

Làm thế nào để sử dụng hàm MATCH trong VBA Excel?

Chúng tôi sẽ chỉ cho bạn một ví dụ đơn giản về việc sử dụng hàm MATCH trong VBA.

Bạn có thể tải xuống Mẫu Excel Khớp VBA này tại đây - Mẫu Excel Khớp VBA

Ví dụ 1

Trong VBA, chúng ta có thể sử dụng công thức MATCH này trong excel dưới dạng hàm trang tính. Làm theo các bước dưới đây để sử dụng hàm MATCH trong VBA.

Bước 1: Tạo một quy trình con bằng cách đặt tên macro.

Mã:

 Sub Match_Example1 ()

Bước 2: Trong ô E2, chúng ta cần kết quả, vì vậy hãy bắt đầu mã là Phạm vi (“E2”). Giá trị =

Mã:

 Sub Match_Example1 () Range ("E2"). Giá trị = End Sub 

Bước 3: Trong ô E2 giá trị phải là kết quả của công thức MATCH. Vì vậy, để truy cập hàm VBA MATCH, trước tiên chúng ta cần sử dụng thuộc tính “WorksheetFunction”. Trong thuộc tính này, chúng tôi sẽ nhận được tất cả danh sách chức năng trang tính có sẵn.

Bước 4: Chọn chức năng MATCH tại đây.

Mã:

 Sub Match_Example1 () Range ("E2"). Value = WorksheetFunction.Match (End Sub 

Bước 5: Bây giờ vấn đề bắt đầu bởi vì chúng tôi không nhận được tên cú pháp chính xác thay vì chúng tôi nhận được cú pháp là “Arg1, Arg2, Arg3” như thế này. Vì vậy, bạn cần phải hoàn toàn chắc chắn về các cú pháp ở đây.

Đối số đầu tiên của chúng ta là GIÁ TRỊ NHÌN, GIÁ TRỊ NHÌN của chúng ta nằm trong ô D2, vì vậy hãy chọn ô làm Phạm vi (“D2”). Giá trị .

Mã:

 Sub Match_Example1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Giá trị, End Sub 

Bước 6: Đối số thứ hai là Table Array, phạm vi mảng trong bảng của chúng ta là từ A2 đến A10. Vì vậy, hãy chọn phạm vi là “Phạm vi (“ A2: A10 ”)”

Mã:

 Sub Match_Example1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Value, Range ("A2: A10"), End Sub 

Bước 7: Bây giờ đối số cuối cùng là MATCH TYPE. Chúng tôi cần một đối sánh chính xác, vì vậy hãy nhập giá trị đối số là 0.

Mã:

 Sub Match_Example1 () Range ("E2"). Value = WorksheetFunction.Match (Range ("D2"). Value, Range ("A2: A10"), 0) End Sub 

Chạy macro, chúng ta sẽ nhận được vị trí của bất kỳ tên năm nào có trong ô D2.

Ví dụ # 2 - Kết hợp VBA từ một trang tính khác

Giả sử cùng một tập dữ liệu từ phần trên nằm trên hai trang tính khác nhau. Ví dụ, mảng bảng có trong tên trang tính được gọi là "Bảng dữ liệu" và Giá trị tra cứu có trong tên trang tính được gọi là "Bảng kết quả".

Trong trường hợp này, chúng ta cần tham chiếu các trang tính theo tên của nó trước khi tham chiếu đến các phạm vi. Dưới đây là bộ mã với tên trang tính.

Mã:

 Sub Match_Example2 () Sheets ("Trang kết quả") .Range ("E2"). Value = WorksheetFunction.Match (Trang tính ("Trang kết quả") .Range ("D2"). Giá trị, Trang tính ("Trang dữ liệu")). Phạm vi ("A2: A10"), 0) Kết thúc phụ 

Ví dụ # 3 - Hàm đối sánh VBA với vòng lặp

Nếu kết quả chúng ta muốn trong một ô thì không vấn đề gì, nhưng nếu kết quả phải đến trong nhiều ô thì chúng ta cần sử dụng vòng lặp VBA để lấy kết quả trong tất cả các ô.

Giả sử bạn có một dữ liệu như thế này.

Trong những trường hợp này, việc viết các đoạn mã dài dòng là một nhiệm vụ cực kỳ nghiêm trọng, vì vậy chúng tôi chuyển sang các vòng lặp. Dưới đây là bộ mã sẽ thực hiện công việc cho chúng tôi.

Mã:

 Sub Match_Example3 () Dim k As Integer For k = 2 to 10 Cells (k, 5) .Value = WorksheetFunction.Match (Cells (k, 4) .Value, Range ("A2: A10"), 0) Tiếp theo k Kết thúc Phụ 

Bộ mã này sẽ nhận được kết quả chỉ trong nháy mắt.


$config[zx-auto] not found$config[zx-overlay] not found