Vlookup - Nhiều kết quả với VBA - Ví dụ về mã VBA

Văn bản Vlookup

Hàm Vlookup tiêu chuẩn có thể được sử dụng để tìm một giá trị trong bảng:

Và chúng tôi sẽ sử dụng hàm VLOOKUP như vậy:

= VLOOKUP (A1: 10, "Dog", 2, FALSE)

để cung cấp giá trị 30.

Tuy nhiên, trong danh sách này chúng ta thấy rằng Dog xuất hiện 3 lần. Hàm VLOOKUP tiêu chuẩn sẽ chỉ trả về giá trị được liên kết với mục đầu tiên trong danh sách này. Nó sẽ không trả về 125 hoặc 9.250 với trường hợp thứ 2 hoặc thứ 3 của “dog” trong danh sách này.

Vlookup Nhiều kết quả

Hàm sau đây cho phép chúng ta chỉ định một phạm vi, một biểu thức cần tìm kiếm và thể hiện (số kết quả) và sau đó trả về giá trị tương ứng:

Hàm Find_nth_Occression (Column_Range As Range, Expression As String, Occ as Integer) As Double Dim Cell Dim Occurrences_to_date As Integer Find_nth_Occention = 1000000 Occurrences_to_date = 0 Đối với mỗi ô trong cột Sau đó Find_nth_Occhood = Cell.Offset (0, 1). Giá trị Kết thúc Nếu Kết thúc Nếu Tiếp theo Chức năng Kết thúc Ô

Sự khác biệt chính giữa hàm này và hàm VLOOKUP tiêu chuẩn là trong trường hợp này, phạm vi là phạm vi nhãn duy nhất - không phải toàn bộ phạm vi dữ liệu.
Sau đây là một chương trình con gọi chức năng này dựa trên sự kiện nhấp chuột từ một nút lệnh. Nó nằm trong phạm vi A1: A8 trên Sheet2, đối với trường hợp thứ 3 của từ Dog:

Private Sub CommandButton1_Click () Dim Answer As Double Answer = Find_nth_Occhood (Sheets ("Sheet2"). Range ("A1: A8"), "Dog", 3) MsgBox AnswerEnd Sub

Biến “Answer” lưu trữ kết quả của hàm - sau đó được hiển thị trong Msgbox trên màn hình:

> Tuy nhiên, nếu không thể tìm thấy từ này trong danh sách hoặc tần suất không xuất hiện, ví dụ: không có phiên bản thứ 5 của từ “Dog”, thì giá trị 1.000.000 được trả về: -
Answer = Find_nth_Occention (Trang tính (“Trang tính2”). Phạm vi (“A1: A8”), “Chó”, 5)
Hoặc
Answer = Find_nth_Occention (Trang tính (“Trang tính 2”). Phạm vi (“A1: A8”), “Ngựa”, 2)

wave wave wave wave wave