Any legitimate Excel user has used VLOOKUP and knows the syntax by heart. (Lookup Value, Array, Column, etc.) But many of these same users have never used INDEX MATCH before. INDEX MATCH is one of several lookup formulas available in Excel.  It has certain features that make it superior to VLOOKUP in many situations. Regardless of which method you think is better, (I have my opinion) it is definitely worth it to learn both formulas and have both at your disposal.
Click here for a detailed explanation of why INDEX MATCH is better than VLOOKUP
Please note that INDEX MATCH is designed for vertical lookups, which is the task that VLOOKUP performs. If you need to perform a matrix lookup, consider using one of the more powerful Excel lookup formula combinations such as INDEX MATCH MATCH, OFFSET MATCH MATCH, VLOOKUP MATCH, or VLOOKUP HLOOKUP.
The VLOOKUP function
First our point of reference: the trusty VLOOKUP formula. VLOOKUP returns a VALUE based on a defined array and column reference. The syntax from Excel is as follows:
=VLOOKUP ( lookup value , lookup array , column , range lookup )
Below is an example of using VLOOKUP to return the value “Shirts” based on the lookup value “1089.” Â (Please note that, because we input false for that portion of the syntax, we are not using the range lookup feature of VLOOKUP in this example)
Our goal was to lookup the Product of ID “1089” and VLOOKUP did that without a hitch. So how does INDEX MATCH replicate that functionality?
The INDEX function
The basic INDEX function returns a VALUE based on a defined array / column and a row number. The syntax from Excel is as follows:
=INDEX ( array , row number )
Below is an example of using INDEX to return the value “Shirts,” assuming that you already know that the value is three cells down on your defined array.
(you also have the option to specify column number, but that isn’t relevant in a basic INDEX MATCH formula)
If you go 3 cells down in the INDEX array, you get the value “Shirts.” But the problem we have when trying to do a lookup is that we typically don’t know what position our return value is located, which in this case is 3. The “3” needs to come from another formula.
The MATCH function
The basic MATCH function returns a NUMBER based on the relative position of a lookup value within a defined array / column. The syntax from Excel is as follows:
=MATCH ( Â lookup value , lookup array , match type )
Below is an example of using the MATCH formula to return the position of “1089” within our column reference.
Since “1089” is three cells down in the array, the value “3” is returned.
INDEXÂ MATCH
When we combine both the INDEX formula and the MATCH formula, the number that the MATCH formula returns becomes the row number for your INDEX formula.
=INDEX ( array , MATCH formula )
Below is an example of using the INDEX MATCH to return “Product Type” for our lookup value.
As you can see, it returns the same value we got from VLOOKUP.
Differences Between the Formulas
One of the key difference with INDEX MATCH is that, rather than selecting an entire array table, you are only selecting the lookup column and the return column of what would be a VLOOKUP array. While not a big deal when it comes to simple lookups, this can definitely become a factor if you are dealing with large files that have thousands of lookups.  By limiting your arrays to only the lookup and return columns, you reduce the processing load on Excel. The difference is illustrated below.
The other key difference is that INDEX MATCH formulas work as a right to left lookup, whereas VLOOKUP only works left to right. As you can see in the example below, I can use INDEX MATCH to lookup a value that is to the right of my return value using INDEX MATCH. This is not possible with the VLOOKUP formula, as you would have to rearrange your data set, or copy your lookup column so that it is always to the left of your return value.
I reversed our formula by looking up the ID of the “Shirts” Product Type. I just changed our lookup value and swapped the lookup and return columns.
Remembering It All
A lot of Excel websites do a poor job of explaining how to use INDEX MATCH. I’m not saying my way is any better, but here’s any easy way to remember how to use the formula, if you don’t want to mess with the detailed explanations and know how to use VLOOKUP. Here’s how I think about the formula as I’m typing it in:
=INDEX ( Column I want a return value from , MATCH ( My Lookup Value , Column I want to Lookup against , Enter “0” ))
great explanation. really helpful . thanks a lot.
Been Using index and match for 14years now, its Also case sensitive that can be important for CRM ID’s for example.
Hi,
Is there a way to adapt this to return multiple values instead of one? I am working with a list which has numerous values per one reference point but this formula only returns the first value, which is also the same as VLOOKUP in an essence.
Very simple n easily understandable example…keep uploading some more example for the teacherless buddy like us…thnz (from Shillong, India)
Excellent, index and match function it works,
and for above question.
To answer your question sohan.
its simple
Copy the numbers in front of the particular name ,and do
ALT+ESE
It works.
Brilliant explain
Great ! thanks of the knowledge
Best way to explain
How to get the row number of the matched line, then? Thanks.
Hi, thanks for the clarification on Index formula. I know almost all the usable formulas in excel but not Index formula. I was lazy understanding this formula and never ever missed this formula as i could achieve the required results through Vlookup etc., but today i learnt and understood based on your easy explanation or may be my brain is in good processing mode today (not sure :P) thanks for the same. I would use index from now on and especially after reading the advantages of the same. Thanks.
Great tutorial and explinations!
Thanks a bunch
Do you know if I can I use the AND or OR function with Index match? IF(AND(index(…match…..),(index(…match…)),
Thanks!
Shawn
I don’t usually comment, this is spectacular! Thank you, you are phenomenal!!!
Thanks for your superb write-ups which are easy to understand.
I need your suggestion.
I am a Banker. Every Friday I extract from Bank’s system data of all my loan files. This file contains around 60 columns and around 6000+ rows. Each row pertains to unique account_id. Each row has balances, addresses etc.
Now I want to compare the latest data with say data of say 31st March to analyse which accounts have more balances and which accounts have reduced balances. I want this information for all the 6000+ rows. Now my question is how to use excel to get results quickly.
Thanks and regards
.
Thank you so much. This was the 3rd site I’ve been to trying to learn how to get my index match formula to work and I finally got it.
Spot on! A concise explanation. I tried Index Match for the first time and will not forget it again. Thanks for your time. Jay
Great explanations! Well done and thanks!
nice… Very nicely explained.
I gotta tell you, I’m using Excel for quite a few years now, I am by no means even close to an expert, but I do dabble with formulas, Pivot tables & Vlookups etc. The one thing I could never master was the Index Match, regardless of what I read or tried, That is, until I came across your website, you explained it so well that I got it in under 10 minutes.
Thanks a ton!
Thank you for the clear explanation at then end. No bull, just a consistent way of doing lookups.
Excellent, very easy to understand once its broken down and you break it down well!
Hi,
I deal with a large amount of data for budgeting and was thinking of whether there is a smart way of using an array formula to generate a list of variables from the data in a summary page to then use for sumifs, vlookups etc? Just want to ensure that any new items are automatically captured in the list rather than having to revise it.
Thank you for the clear “Rembering It All”! It now makes sence to me!
Great Formula
Concise…
+1 on the remembering it all. I always search for your URL when googling XL functions. Thank you for your excellent guides!
Hi here. Please help me out here. I have multiple sheets in my excel document. I need to monitor one coulomb in a sheet for a specific word and when the word appears in that coulomb the information from the line of that coulomb must be displayed on another sheet that match the word I was monitoring on the first sheet. I hope this make sense.
Kind regards
Konrad
this is awesome, i gt the nerve of it just by trying it once, thnks fr explaining it such wy (Y)