1. 程式人生 > 其它 >自定義類似VlookUp函式的包含性匹配

自定義類似VlookUp函式的包含性匹配

使用場景介紹:

基礎資料表Sheet1:

 代查詢匹配的表Sheet2:

【說明】代查詢工作表中的規格,只是基礎工作表中規格的一部分,是完全被包含的關係,只要是完全被包含,就匹配其代號,填寫入代號一列

建立了自定義函式MyLookUp

Sheet2表中B2單元格寫入以入自定義的函式公式:

=MyLookUp(A2,Sheet1!A:B,2),即得到想要的結果,如圖:

自定義函式MyLookUP的程式碼如下:

Public Function MyLookUP(FindValue As Range, SourceRange As Range, Col As Integer) As Variant
Dim Rng As Range, returnRng As Range
'以下是對查詢區域進行了一個範圍的壓縮,精細到只在有效資料區域進行查詢匹配。
'因為有很多使用者會習慣選取整個列來作為資料區域(包括工作表UsedRange之外的區域),這會造成無意義的迴圈遍歷
Set SourceRange = Application.Intersect(SourceRange.Parent.UsedRange, SourceRange)
For Each Rng In SourceRange.Columns(1).Cells
    If InStr(1, Rng.Value, FindValue.Value, vbTextCompare) > 0 Then
        Set returnRng = Rng.Offset(0, Col - 1)
        Exit For
    End If
Next
    MyLookUP = returnRng.Value
End Functiont