Is Index/Match Faster when just looking up one column?

snipescc

Board Regular
Joined
Aug 29, 2010
Messages
136
Office Version
  1. 365
Platform
  1. Windows
I'm doing a massive number of Vlookups on an old computer running the latest version of Excel . I've heard both that index/match is faster, and that it used to be, but isn't much anymore. Some vlookups are only in one column, some will be a few columns wide. I'm more comfortable with vlookup that Index/Match, but considering the hundreds of thousands that I'm doing, can anyone tell me if it will be worth switching?
 

Excel Facts

What is the shortcut key for Format Selection?
Ctrl+1 (the number one) will open the Format dialog for whatever is selected.
I think the biggest performance advantage index/match will have over vlookup is when you're doing multiple lookups based on the same lookup value..

i.e.
You do this
=VLOOKUP(A1,othersheet!$A:$Z,2,0)
But then repeating the exact same formula changing the 2 to 3 to 4 etc..
=VLOOKUP(A1,othersheet!$A:$Z,3,0)
=VLOOKUP(A1,othersheet!$A:$Z,4,0)

In this scenario, vlookup is doing the work of finding the value of A1 in othersheet!A:A 3 times.

If instead, you do this
in B1 put
=MATCH(A1,othersheet!A:A,0)
Then use
=INDEX(othersheet!B:B,$B1)
And fill right.

Then the work of finding A1 in othersheet!A:A is only done once.
The result of that work is then only referenced by the index formula.

That will make a HUGE performance improvement.
 
Upvote 0
I cannot imagine why index/match would be faster than vlookup. Conceptually, it should be just the opposite. So off-hand, I would say: no, it is not worth switching.

But it might depend on details that you neglected to provide, namely example vlookup and index/match formulas.

Moreover, you say "some vlookups are ... a few columns wide". That makes no sense. VLOOKUP and MATCH search only one column; in the case of VLOOKUP, it is the first column of the second parameter.
 
Upvote 0
That's a good point. So I add another column, and all the other lookups just look at that number. Nice.
 
Upvote 0
To be fair and recognize joeu2004's point..
A single index/match formula will certainly not be faster than a single vlookup formula.

However, depending on how they are used
1000 index/match formulas can indeed be faster than 1000 vlookups.
 
Upvote 0
Upvote 0
Another way to improve performance of vlookup or index/match (I'll use vlookup for this example)
Is if your data can be sorted in Ascending Order.

If you can do that, then performance can be improved immensely

Using the same vlookup from previous example =VLOOKUP(A1,othersheet!$A:$Z,2,0)
With Data Sorted Ascending by column A on othersheet, you can do this
=IF(VLOOKUP(A1,othersheet!$A:$Z,1,TRUE)=A1,VLOOKUP(A1,othersheet!$A:$Z,2,TRUE),NA())


YES, 2 vlookups using TRUE as the 4th argument will be many (MANY) times faster than 1 vlookup using FALSE.


The same can be done with index/match, from my example above you would use 1 instead of 0 in the match.
=MATCH(A1,othersheet!A:A,1)
 
Last edited:
Upvote 0

Forum statistics

Threads
1,224,822
Messages
6,181,165
Members
453,021
Latest member
Justyna P

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top