Hi,
Try this code.
Actually it treats the text like number as a true number.Code:Public Function MLOOKUP(TableArray As Range, ByVal LookupVal, LookupRange As Range, _ Optional ByVal NumAsText As Boolean = False, Optional ByVal NthMatch As Long) '--------------------------------------------------------------------------------------- ' Procedure : MLOOKUP ' Author : Krishnakumar @ ExcelFox.com ' Date : 12/5/2012 ' Purpose : Returns multiple values '--------------------------------------------------------------------------------------- If Not TypeOf TableArray Is Range Then MLOOKUP = CVErr(2042) Exit Function End If If Not TypeOf LookupRange Is Range Then MLOOKUP = CVErr(2042) Exit Function End If If TableArray.Rows.Count <> LookupRange.Rows.Count Then MLOOKUP = CVErr(2042) Exit Function End If If TableArray.Columns.Count <> LookupRange.Columns.Count Then MLOOKUP = CVErr(2042) Exit Function End If Dim LV_Cnt As Long 'Count Loookup Value Dim KA1, KA2 Dim r As Long, c As Long Dim fFoundNo As Long Dim n As Long Dim strLval As String If IsNumeric(LookupVal) Then LV_Cnt = Evaluate("countif(" & LookupRange.Address(, , , 1) & "," & LookupVal & ")") If NumAsText Then GoTo 1 fFoundNo = Evaluate("match(" & CLng(LookupVal) & "," & LookupRange.Address(, , , 1) & ",0)") ElseIf IsDate(LookupVal) Then LV_Cnt = Evaluate("countif(" & LookupRange.Address(, , , 1) & "," & CLng(LookupVal) & ")") fFoundNo = Evaluate("match(" & CLng(LookupVal) & "," & LookupRange.Address(, , , 1) & ",0)") Else 1: strLval = """" & LookupVal & """" LV_Cnt = Evaluate("countif(" & LookupRange.Address(, , , 1) & "," & strLval & ")") fFoundNo = Evaluate("match(" & strLval & "," & LookupRange.Address(, , , 1) & ",0)") End If If NthMatch > 0 Then If LV_Cnt = 0 Or NthMatch > LV_Cnt Then MLOOKUP = CVErr(2042) Exit Function End If End If KA1 = TableArray: KA2 = LookupRange For r = fFoundNo To UBound(KA1, 1) For c = 1 To UBound(KA1, 2) If LCase$(KA2(r, c)) = LCase$(LookupVal) Then If NthMatch Then n = n + 1 If n = NthMatch Then MLOOKUP = KA1(r, c) Exit Function End If Else MLOOKUP = MLOOKUP & "," & KA1(r, c) End If End If Next Next MLOOKUP = Mid$(MLOOKUP, 2) End Function
use the formula like
=MLOOKUP(T$2:T$226,A3,S$2:S$226,TRUE)




Reply With Quote
Bookmarks