在這個世界上,只有你想不到的,沒有做不到的。 高手永遠都是高手啊。
大家都知道Excel自帶的VLOOKUP函數(shù)如果存在多個符合條件的結(jié)果時,只能返回符合條件的第一個結(jié)果,如果想知道第二個、第三個甚至是后面的就無能為力了。下面的自定義函數(shù)的作用和VLOOKUP一樣,唯一不同的是,這個函數(shù)可以通過第三個參數(shù)來指定返回第幾個符合條件的結(jié)果。值得珍藏的代碼。(JT_man注:收錄時已修改部分代碼)
Function WLOOKUP(X As Variant, M As Range, A As Byte, B As Integer)
'X 要查找的內(nèi)容,可為單元格型、字符型、數(shù)值型、邏輯型等等。
'M 要進行數(shù)據(jù)查詢的單列區(qū)域,與VLOOKUP函數(shù)的參數(shù)有區(qū)別。
'A 返回第幾個符合條件的結(jié)果。如果重復(fù)值超過255個,
' 視具體情況把第1行代碼中的 A As Byte 改為 A As Integer 或 A As Long
'B 返回結(jié)果的列索引,可以是0或負數(shù)。
' 用于數(shù)據(jù)查詢的單列區(qū)域M所在列的值為1,表示第1列,
' 右側(cè)第1列為2,右側(cè)第2列為3 。。。。。。
' 左側(cè)第1列為0,左側(cè)第2列為-1,左側(cè)第3列為-2 。。。。。。以此類推
Dim I As Integer, MR As Range, y As Integer
I = Application.WorksheetFunction.CountIf(M, X)
'Set M = Intersect(M.Parent.UsedRange, M)
For Each MR In M
If MR.Value = X Then
y = y + 1
If y = A Then
WLOOKUP = MR.Offset(0, B - 1).Value
Exit Function
End If
End If
Next MR
WLOOKUP = ""
End Function
使用方法示例:
要求:根據(jù)下述成績表,得到所有姓名為“張3”的外語成績。
聯(lián)系客服