Thank you so much for posting this UDF it got me going on the right track.

To answer your statement "and let me know whether there are any chances of improvement..", I believe the following would be a performance improvement, as it doesn't loop through every single cell, and also uses the built in range.find method to do the heavy lifting.

Refer to seprate Excel Function: nXLookup thread for the nXLookup's VBA code.

Cell Formula:
=ROW(nXLookup(Lookup_value,Lookup_Range,0,0,Match No.))

PS: I'm not trying to piggy back my thread on top of yours, please let me know if you feel this way and I'll delete this comment.