Vlookup is fine if your data is laid out right to left and sorted. Otherwise the results can be incorrect. There is a comprehensive of the pro's and con's In excljet.net - google vlookup caution sort and you'll find it.
An alternative is to use the so-called Index Match. This is a combination of two functions nested together to produce the result. The basic configuration of each formula is:
=INDEX([array], [row_number], [column_number])
=MATCH([lookup_value], [lookup_array], [match_type])
You combine then to do your lookup as follows:
=INDEX([array], match (..........), [column_number]) or
=INDEX([array], [row_number], match (..........))
Note that "array" simply refers to a column or range of data.
There's plenty of information on the web, so I'll leave it to you to google a spreadsheet forum to get specific help.