一、怎麼自定義Excel函數nlookup
開發工具--visual basic--左側this workbook--插入模塊--輸入一下代碼
Function Nlookup(rg, rgs As Range, L As Integer, M As Integer)
Dim arr1, ARR2, 列數
Dim R, n, K, X, cc, sr As String
arr1 = rg.Value
ARR2 = rgs
If VBA.IsArray(arr1) Then
For Each R In arr1
If R <> "" Then
cc = cc & R
列數 = 列數 + 1
End If
Next R
Else
cc = arr1
End If
If M > 0 Then '非查找最後一個
For X = 1 To UBound(ARR2)
sr = ""
If 列數 > 1 Then
For q = 1 To 列數
sr = sr & ARR2(X, q)
Next q
Else
sr = ARR2(X, 1)
End If
If sr = cc Then
K = K + 1
If K = M Then
Nlookup = ARR2(X, L)
Exit Function
End If
End If
Next X
ElseIf M = -1 Then '查找所有值
For X = 1 To UBound(ARR2)
sr = ""
If 列數 > 1 Then
For q = 1 To 列數
sr = sr & ARR2(X, q)
Next q
Else
sr = ARR2(X, 1)
End If
If sr = cc Then
Nlookup = Nlookup & "," & ARR2(X, L)
End If
Next X
Nlookup = Right(Nlookup, Len(Nlookup) - 1)
Exit Function
Else '查找最後一個
For X = UBound(ARR2) To 1 Step -1
sr = ""
If 列數 > 1 Then
For q = 1 To 列數
sr = sr & ARR2(X, q)
Next q
Else
sr = ARR2(X, 1)
End If
If sr = cc Then
Nlookup = ARR2(X, L)
Exit Function
End If
Next X
End If
Nlookup = ""
End Function
語法格式:
=Nlookup(查找條件值,查找範圍區域,查找值所在列,需要查詢的個數),與vlookup函數最大的區別在於第四個參數。
實例: A 單條件查找
第一個結果 (第四個參數 1表示第一個 4表示第四個 0表示最後一個)
=nlookup(D2,$A$2:$B$18,MATCH($E$1,$A$1:$B$1,0),1)
B:多條件查詢
=nlookup(E2:F2,A2:C18,3,2) E2:F2多個條件區域 A2:C18 區域 3表示第三列 2表示第二個
C查找張三的所有銷售額數據(提取人員所有數據)
=nlookup(E2,A2:C18,3,-1) E2查詢的數據 A2:C18查詢區域 ,3第三列 ,-1 表示提取所有
怎麼樣,是不是比vlookup更牛!
閱讀更多 淡墨留餘香 的文章