Function Vlookups(Table_Range As Range, Return_Col As Long, Val1, Col1_Fnd, _
Optional Val2, Optional Col2_Fnd As Long = 0, _
Optional Val3, Optional Col3_Fnd As Long = 0, _
Optional Val4, Optional Col4_Fnd As Long = 0, _
Optional Val5, Optional Col5_Fnd As Long = 0)
On Error Resume Next
If Col2_Fnd = 0 Then
For xLoop = 1 To Table_Range.Rows.Count
If (Table_Range(xLoop, Col1_Fnd)) = (Val1) Then
Vlookups = Table_Range(xLoop, Return_Col)
Exit Function
End If
Next xLoop
ElseIf Col3_Fnd = 0 Then
For xLoop = 1 To Table_Range.Rows.Count
If (Table_Range(xLoop, Col1_Fnd)) = (Val1) And _
(Table_Range(xLoop, Col2_Fnd)) = (Val2) Then
Vlookups = Table_Range(xLoop, Return_Col)
Exit Function
End If
Next xLoop
ElseIf Col4_Fnd = 0 Then
For xLoop = 1 To Table_Range.Rows.Count
If (Table_Range(xLoop, Col1_Fnd)) = (Val1) And _
(Table_Range(xLoop, Col2_Fnd)) = (Val2) And _
(Table_Range(xLoop, Col3_Fnd)) = (Val3) Then
Vlookups = Table_Range(xLoop, Return_Col)
Exit Function
End If
Next xLoop
ElseIf Col5_Fnd = 0 Then
For xLoop = 1 To Table_Range.Rows.Count
If (Table_Range(xLoop, Col1_Fnd)) = (Val1) And _
(Table_Range(xLoop, Col2_Fnd)) = (Val2) And _
(Table_Range(xLoop, Col3_Fnd)) = (Val3) And _
(Table_Range(xLoop, Col4_Fnd)) = (Val4) Then
Vlookups = Table_Range(xLoop, Return_Col)
Exit Function
End If
Next xLoop
Else
For xLoop = 1 To Table_Range.Rows.Count
If (Table_Range(xLoop, Col1_Fnd)) = (Val1) And _
(Table_Range(xLoop, Col2_Fnd)) = (Val2) And _
(Table_Range(xLoop, Col3_Fnd)) = (Val3) And _
(Table_Range(xLoop, Col4_Fnd)) = (Val4) And _
(Table_Range(xLoop, Col5_Fnd)) = (Val5) Then
Vlookups = Table_Range(xLoop, Return_Col)
Exit Function
End If
Next xLoop
End If
Vlookups = "#N/A"
End Function