This custom function can use the 1st 2 Columns of a table as matching criteria and return the nth column row to the right of the matching row range.
Function Two_Con_Vlookup(Table_Range As Range, Return_Col As Long, Col1_Fnd, Col2_Fnd)
''EXCEL 2003 OR ABOVE
''WRITTEN BY OZGRID.COM
Dim rCheck As Range, bFound As Boolean, lLoop As Long
On Error Resume Next
Set rCheck = Table_Range.Columns(1).Cells(1, 1)
With WorksheetFunction
For lLoop = 1 To .CountIf(Table_Range.Columns(1), Col1_Fnd)
Set rCheck = Table_Range.Columns(1).Find(Col1_Fnd, rCheck, xlValues, xlWhole, xlNext, xlRows, False)
If UCase(rCheck(1, 2)) = UCase(Col2_Fnd) Then
bFound = True
Exit For
End If
Next lLoop
End With
If bFound = True Then
Two_Con_Vlookup = rCheck(1, Return_Col)
Else
Two_Con_Vlookup = "#N/A"
End If
End Function
OR
Function Two_Con_Vlookup(Table_Range As Range, Return_Col As Long, Col1_Fnd, Col2_Fnd)
''PRE EXCEL 2003
''WRITTEN BY OZGRID.COM
Dim rCheck As Range, bFound As Boolean, lLoop As Long, lRow As Long
On Error Resume Next
Set rCheck = Table_Range.Columns(1).Cells(1, 1)
With WorksheetFunction
For lLoop = 1 To .CountIf(Table_Range.Columns(1), Col1_Fnd)
lRow = .Match(Col1_Fnd, Table_Range.Columns(1).Range("A" & lRow + 1 & ":A65536"), 0) + lRow
Set rCheck = Table_Range.Columns(1).Range("A" & lRow)
If UCase(rCheck(1, 2)) = UCase(Col2_Fnd) Then
bFound = True
Exit For
End If
Next lLoop
End With
If bFound = True Then
Two_Con_Vlookup = rCheck(1, Return_Col)
Else
Two_Con_Vlookup = "#N/A"
End If
End Function
Use like;
=Two_Con_Vlookup($A$1:$H$20,6,"Apr",4)
in any cell other than $A$1:$H$20
Where $A$1:$H$20 is the table range
6 is the nth column to return the matching row from.
"Apr" and 4 are the 2 conditions to match in the 1st 2 Columns
See also: |
3 Criteria VLookup for Excel |
4 Criteria VLookup for Excel |
5 Criteria Vlookup for Excel |
Free Training Course: Lesson 1 - Excel Fundamentals
See also: Index to Excel VBA Code; Index to Excel Freebies; Lesson 1 - Excel Fundamentals; Index to how to… providing a range of solutions
Click here to visit our Free 24/7 Excel/VBA Help Forum where there are thousands of posts you can get information from, or you can join the Forum and post your own questions.