*This tutorial shows how to use INDEX and MATCH in Excel and how it is better than VLOOKUP. *

In a couple of recent articles I made a good effort to explain the basics of VLOOKUP function to beginners and provide more complex VLOOKUP formula examples to power users. And now, I will try if not to talk you out of using VLOOKUP, then at least show you an alternative way to do a vertical lookup in Excel.

"What do I need that for?" you may ask me. Because VLOOKUP is not the only lookup function in Excel, and its numerous limitations might prevent you from getting the desired result in many situations. On the other hand, Excel INDEX MATCH is more flexible and has a number of features that make it superior to VLOOKUP in many respects.

Since the aim of this tutorial is to demonstrate an alternative way to do a vlookup in Excel by using a combination of INDEX and MATCH functions, we won't dwell much on their syntax and uses. We will cover only the minimum necessary for understanding the general idea and then take an in-depth look at formula examples that reveal all the advantages of using INDEX MATCH instead of VLOOKUP.

The Excel INDEX function returns a value in an array based on the row and column numbers you specify. The syntax of the INDEX function is straightforward:

INDEX(array, row_num, [column_num])

Here is a very simple explanation of each parameter:

**array**- a range of cells that you want to return a value from.**row_num**- the row number in array from which you want to return a value. If omitted, the column_num is required.**column_num**- the column number in array from which you want to return a value. If omitted, row_num is required.

For more information, please see Excel INDEX function.

And here is an example of the INDEX formula in its simplest form:

`=INDEX(A1:C10,2,3)`

The formula searches in cells A1 through C10 and returns a value of the cell in the 2nd row and the 3rd column, i.e. cell C2.

Very easy, right? However, when working with real data you would hardly ever know which row and column you want, that's where the MATCH function comes in handy.

The Excel MATCH function searches for a lookup value in a range of cells and returns the **relative position** of that value in the range.

The syntax of the MATCH function is as follows:

MATCH(lookup_value, lookup_array, [match_type])

**lookup_value**- the number or text value you are looking for.**lookup_array**- a range of cells being searched.**match_type**- specifies whether to return an exact match or the nearest match:- 1 or omitted - finds the largest value that is less than or equal to the lookup value. Requires sorting the lookup array in ascending order.
- 0 - finds the first value that is exactly equal to the lookup value. In the INDEX / MATCH combination, you almost always need an exact match, so you set the third argument of your MATCH function to 0.
- -1 - finds the smallest value that is greater than or equal to lookup_value. Requires sorting the lookup array in descending order.

For example, if the range B1:B3 contains the values "New-York", "Paris", "London", the below formula returns the number 3, because "London" is the third entry in the range:

`=MATCH("London",B1:B3,0)`

For more information, please see Excel MATCH function.

At first sight, the usefulness of the MATCH function may seem questionable. Who cares about the position of a value in a range? What we do want to know is the value itself.

Let me remind you that the relative position of the lookup value (i.e. row and column numbers) is exactly what you need to supply to the *row_num* and *column_num* arguments of the INDEX function. As you remember, Excel INDEX can find the value at the juncture of a given row and column, but it cannot determine which exactly row and column you want.

Now that you know the basics, I believe it has already started making sense how MATCH and INDEX work together. In a nutshell, INDEX finds the lookup value by column and row numbers, and MATCH provides those numbers. That's it!

For vertical lookup, you use the MATCH function only to determine the row number and supply the column range directly to INDEX:

INDEX (*column to return a value from*, MATCH (*lookup value*, *column to look up against*, 0)

Still having difficulties to figure that out? It might be easier to understand from an example. Suppose you have a list of national capitals and their population:

To find the population of a certain capital, say the capital of Japan, use the following INDEX MATCH formula:

`=INDEX(C2:C10, MATCH("Japan", A2:A10, 0))`

Now, let's analyze what each component of this formula actually does:

- The MATCH function searches for the lookup value "Japan" in the range A2:A10, and returns the number 3, because "Japan" is third in the lookup array.
- The row number goes directly to the
*row_num*argument of INDEX instructing it to return a value from that row.

So, the above formula turns into a simple INDEX(C2:C,3) that says to search in cells C2 through C10 and pull the value from the 3^{rd} cell in that range, i.e. C4 because we start counting from the second row.

Don't want to hardcode the city in the formula? Input it in some cell, say F1, supply the cell reference to MATCH, and you will get a dynamic lookup formula:

`=INDEX(C2:C10, MATCH(F1,A2:A10,0))`

**Important note!** The number of rows in the *array* argument of INDEX should match the number of rows in the *lookup_array* argument of MATCH, otherwise the formula will produce an incorrect result.

Wait, wait… why don't we simply use the following Vlookup formula? What's the point in wasting time trying to figure out the arcane twists of Excel MATCH INDEX?

`=VLOOKUP(F1, A2:C10, 3, FALSE)`

In this case, no point at all :) This simple example is for demonstration purposes only, so that you get a feel of how the INDEX and MATCH functions work together. Other examples that follow below will show you the real power of this combination that easily copes with many complex scenarios when VLOOKUP stumbles.

When deciding which function to use for vertical lookups, most Excel gurus agree that INDEX MATCH is far better than VLOOKUP. However, many people still stay with VLOOKUP, firstly, because it's simpler and, secondly, because they do not fully understand all benefits of using the INDEX MATCH formula in Excel. Without such understanding no one is willing to invest their time to learn a more complex syntax.

Below, I will point out the key advantages of MATCH INDEX over VLOOKUP, and you decide whether it's a worthy addition to your Excel arsenal.

**Right to left lookup.**As any educated user knows, VLOOKUP cannot look to its left, meaning your lookup value should always reside in the leftmost column of the table. INDEX MATCH can do left lookup with ease! The following example shows it in action: How to Vlookup a value to the left in Excel.**Insert or delete columns safely.**VLOOKUP formulas get broken or delivers incorrect results when a new column is deleted from or added to a lookup table because VLOOKUP's syntax requires specifying the index number of the column you want to pull the data from. Naturally, when you add or delete columns, the index number changes.With INDEX MATCH, you specify the return column range, not an index number. As the result, you are free to insert and remove as many columns as you want without worrying about updating every associated formula.

**No limit for a lookup value's size.**When using the VLOOKUP function, the total length of your lookup criteria cannot exceed 255 characters, otherwise you will end up having the #VALUE! error. So, if your dataset contains long strings, INDEX MATCH is the only working solution.**Higher processing speed.**If your tables are relatively small, there will hardly be any significant difference in Excel performance. But if your worksheets contain hundreds or thousands of rows, and consequently hundreds or thousands of formulas, MATCH INDEX will work much faster than VLOOKUP because Excel will have to process only the lookup and return columns rather than the entire table array.VLOOKUP's impact on Excel's performance may be especially noticeable if your workbook contains complex array formulas like VLOOKUP and SUM. The point is that checking each value in the array requires a separate call of the VLOOKUP function. So, the more values your array contains and the more array formulas you have in a workbook, the slower Excel performs.

Knowing the reasons to learn the MATCH INDEX function, let's get to the most interesting part and see how you can apply the theoretical knowledge in practice.

As already mentioned, VLOOKUP cannot look at its left. So, unless your lookup values are is the leftmost column, there's no chance that a Vlookup formula will bring you the result you want. The INDEX MATCH function in Excel is more versatile and does not really care where the lookup and return columns are located.

For this example, we will add the Rank column to the left of our sample table and try to figure out how the Russian capital, Moscow, ranks in terms of population.

With the lookup value in G1, use the following formula to search in C2:C10 and return a corresponding value from A2:A10:

`=INDEX(A2:A10,MATCH(G1,C2:C10,0))`

In the above examples, we used INDEX MATCH as the replacement for classic VLOOKUP to return a value from a predefined one-column range. But what if you need to look up in multiple rows and columns? In other words, what if you want to perform the so-called *matrix* or *two-way* lookup?

This may sound tricky, but the formula is very similar to the basic Excel INDEX MATCH function, with just one difference. Guess what?

Simply, use two MATCH functions – one to get a row number and the other to get a column number. And I congratulate those of you who have guessed right :)

INDEX (array, MATCH (*vlookup value*, *column to look up against*, 0), MATCH (*hlookup value*, *row to look up against*, 0))

And now, please take a look at the below table and let's build an INDEX MATCH MATCH formula to find the population (in millions) in a given country for a given year.

With the target country in G1 (vlookup value) and the target year in G2 (hlookup value), the formula takes this shape:

`=INDEX(B2:D11, MATCH(G1,A2:A11,0), MATCH(G2,B1:D1,0))`

Whenever you need to understand a complex Excel formula, break it down into smaller parts and see what each individual function does:

`MATCH(G1,A2:A11,0)`

– searches through A2:A11 for the value in cell G1 ("China") and returns its position, which is 2.

`MATCH(G2,B1:D1,0))`

– searches through B1:D1 to get the position of the value in cell G2 ("2015"), which is 3.

The above row and column numbers go to the corresponding arguments of the INDEX function:

`INDEX(B2:D11, 2, 3)`

As the result, you get a value at the intersection of the 2nd row and 3rd column in the range B2:D11, which is the value in cell D3. Easy? Yep!

If you had a chance to read our Excel VLOOKUP tutorial, you have probably already tested a formula to Vlookup with multiple criteria. However, a significant limitation of that approach is the necessity to add a helper column. The good news is that Excel's INDEX MATCH function can look up with two or more criteria too, without modifying or restructuring your source data!

Here's the generic INDEX MATCH formula with multiple criteria:

{=INDEX(*return_range*, MATCH(1, (*criteria1*=*range1*) * (*criteria2*=*range2*), 0))}

In the sample table below, supposing you want to find the amount based on 2 criteria, *Customer* and *Product*.

The following INDEX MATCH formula works a treat:

`=INDEX(C2:C10, MATCH(1, (F1=A2:A10) * (F2=B2:B10), 0))`

Where C2:C10 is the range to return a value from, F1 is criteria1, A2:A10 is the range to compare against criteria1, F2 is criteria 2, and B2:B10 is the range to compare against criteria2.

Remember to enter the formula correctly by pressing Ctrl + Shift + Enter, and Excel will automatically enclose it curly brackets as shown in the screenshot:

If you'd rather not use array formulas in your worksheets, add one more INDEX function to the formula and complete it with a usual Enter hit:

The formulas use the same approach as the basic INDEX MATCH function that looks through a single column. To evaluate multiple criteria, you create two or more arrays of TRUE and FALSE values that represent matches and non-matches for each individual criterion, and then multiply the corresponding elements of these arrays. The multiplication operation converts TRUE and FALSE into 1 and 0, respectively, and produces an array where 1's correspond to rows that match all the criteria. The MATCH function with a lookup value of 1 finds the first "1" in the array and passes its position to INDEX, which returns a value in this row from the specified column.

The non-array formula relies on the ability of the INDEX function to handle arrays natively. The second INDEX is configured with 0 *row_num* so that it will pass the entire column array to MATCH.

That is a high-level explanation of the formula's logic. For full details, please see Excel INDEX MATCH with multiple criteria.

Microsoft Excel has special functions to find a minimum, maximum and average value in a range. But what if you need to get a value from another cell that is associated with those values? In this case, use the MAX, MIN or AVERAGE function together with INDEX MATCH.

To find the largest value in column D and return a value from column C in the same row, use this formula:

`=INDEX(C2:C10, MATCH(MAX(D2:D10), D2:D10, 0))`

To locate the smallest value in column D and pull an associated value from column C, use this one:

`=INDEX(C2:C10, MATCH(MIN(D2:D10), D2:D10, 0))`

To work out the value closest to the average in D2:D10 and get a corresponding value from column C, this is the formula to use:

`=INDEX(C2:C10, MATCH(AVERAGE(D2:D10), D2:D10, -1 ))`

Depending on how your data is organized, supply either 1 or -1 to the third argument (match_type) of the MATCH function:

- If your lookup column (column D in our case) is sorted
**ascending**, put 1. The formula will calculate the largest value that is**less than**or equal to the average value. - If your lookup column is sorted
**descending**, enter -1. The formula will compute the smallest value that is**greater than**or equal to the average value. - If your lookup array contains a value
**exactly equal**to the average, you can enter 0 for exact match. No sorting is required.

In our example, the populations in column D are sorted in descending order, so we use -1 for match type. As the result, we get "Tokyo" since its population (13,189,000) is the closest match that is greater than average (12,269,006).

You may be curious to know that VLOOKUP can perform such calculations too, but as an array formula: VLOOKUP with AVERAGE, MAX, MIN.

As you have probably noticed, if an INDEX MATCH formula in Excel cannot find a lookup value, it produces an #N/A error. If you wish to replace the standard error notation with something more meaningful, wrap your INDEX MATCH formula in the IFNA function. For example:

`=IFNA(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "No match is found")`

And now, if someone inputs a lookup table that does not exist in the lookup range, the formula will explicitly inform the user that no match is found:

If you'd like to catch all errors, not only #N/A, use the IFERROR function instead of IFNA:

`=IFERROR(INDEX(C2:C10, MATCH(F1,A2:A10,0)), "Oops, something went wrong!")`

Please keep in mind that in many situations it might be unwise to disguise all errors because they alert you about possible faults in your formula.

That's how to use INDEX and MATCH in Excel. I hope our formula examples will prove helpful for you and look forward to seeing you on our blog next week!

Excel INDEX MATCH examples (.xlsx file)

Excel formulas
CSV
Excel functions
Print
Financial functions
Vlookup
Merge data in Excel
SumIf
CountIf
Excel Compare
If statement
Excel Charts
Pivot Table
Conditional formatting
Excel formatting
Excel duplicates
Excel date
Excel tips
Excel macro
Outlook
Google Sheets
Outlook duplicates
Outlook templates

## 502 responses to "INDEX & MATCH in Excel - better alternative to VLOOKUP"

Hi,

I'm trying to find something similar to this but I'm having trouble.

I have a list of addresses in Sheet 1, the whole address is in one cell. So for example A2, A3, A4 all contain a different address. Then in B2, B3, B4 etc I want to display a area code, "3" or "8" for example based on the postcode in the cell in column A.

I have a list of postcodes in Sheet 2 with the area code adjacent to them.

I've tried with a VLOOKUP and a CELL but I cant fathom it out... if anyone can help I would be grateful......

Hi J.E., if I understand you correctly, you might be better off using VLOOKUP here. So on Sheet1, cell B1, if you wrote something like:

=VLOOKUP(RIGHT(A1,7),Sheet2!$A$1:$B$50,2,0)

where the address in cell A1 contains a 6-character postcode with a space in the middle, you should return the area code.

Hope that helps!

Min

Hi iam Trying to reverse VLOOKUP but its not possible right instead of VLOOKUP How to use index function

Lookup values

Master list( Some date )

Thank you! Thank you! I've spent 3 days working on a spreadsheet, copy and pasting values to only mess it all up. Your Index and Match function explanations enabled me to do the same thing 3 minutes. You are a genius!

Congratulations on a tutorial well done!

Hi...I have 2 columns of data... Let say Column A as list of Capital as in the example above and column B is a remark, filled with text -"take" in Row 3 and 5 only for example. I want to use Index to identify if you find take - then show capital in the 1st row, in the 2nd row etc in column D for example as I want to have the result be positioned. How can I do it with index and it should be matched with which other formula. Can you help?

I think this is where my question would go... I have a dataset with a list of patients, their visit dates and the pain score they reported on that date. I need to flag all of the patients whose score increased on the subsequent visit (i.e., the treatment is not working). Tried with a pivot and lookup table to get the max score but can't get the dates compared. Assist please.

Thank you for this wonderful tutorial. It only took me ten minutes to get the formula working for me. I like the way you write! Almost feels like you are a teacher in a classroom explaining it on a board. You made me feel like a student again, and lucky for me, one who just passed :-)

Oh and one more thing, bye bye vlookup ...

Hi Lu,

A simpler solution to your question would be to sort your data by patient and date of visit. A conditional formatting can be used to indicate where a pain score is higher than the previous visit.

Fantastic tutorial.

Thanks, I found this really useful.

I have column A with a unique list of hundreds of names

I have column C with a not unique list of thousands of names that includes multiple instances of names from column A, and 100 times as many names that are not in Column A

I have column D with the same amount of rows as column C, all unique numbers.

I need to take every name from column A, find all of the same name in column C and then give me a list of all the phone numbers it finds from column D.

And I need all those numbers to be in one big column.

Matthew:

How are the names in C connected to the numbers in D?

They aren't. They are basically random unique numbers.

Hi,

Sir,

Your explanation mathod is superb......

Any simple person could also be understand....

Are you a lecturer in any institute.....

I am looking for excel formula for following scenario:

Ex: Column A,C & E indicates color and Col B ,D & F Indicates price of the color. In Column G , We need to find minimum price for red color.

ColumnA Col.B Col.C Col.D Col.E Col.F Col.G

Row1 Yellow 15 Red 58 Red 32 Min price of red

Please share which formula will be suitable to overcome on above scenario.

Transpose the rows than color over price than highlight the new table than add an pivot table.

Great tutorial! My question would be if I have 'like' numbers in my array can I still pick up the value if they have different labels attached to them? For example I am applying a score to tickers, then ranking them, top three tickers would be ISRG, GOOGL and AAPL. ISRG has a score of 20, GOOGL and AAPL have a score of 19. Currently my situation and formula (using hlookup) returns in rank 1 ISRG, rank 2 GOOGL, and rank 3 GOOGL. Is there a way to where matching values still return the given ticker, thus showing AAPL instead of two GOOGL?

please help me how can i separat the name of students which are absent in daily roll call from excel attandance sheet

Using the INDEX MATCH to return data based on the matching of two cells in a different spreadsheet, is there a way to make the MATCH process more than just the first located match? I am using a Google Sheet with a Form to add in a person's intial certificates but also to add when they complete a new certificate. I would like the line for that person on the main tab to update with ALL form entries. Here is my formula:

=ArrayFormula(IfError(INDEX('Form Responses 1'!$A$2:$AH$1001, MATCH(1, ($A2='Form Responses 1'!$B$2:$B$1001)*($B2='Form Responses 1'!$C$2:$C$1001),0), 6),""))

Hello

Need an help regarding the "Index" function

here I was trying to grab Index with "v-look up", hence I'm using it in getting data from another sheet, I'm seeing some popup stating formula is wrong,

Please guide me clearly with formula how to use "Index" with "V-lookup"

Appreciate your help

I have two sheets, one sheet(A) having unique codes and sheet (B) having same unique codes, category (PT, ST, IT etc..) and date column

Here sheet (B) have multiple records for same code, same category

Now, In Sheet (A) I want to get the min date for PT and max date for PT with reference to sheet (B)

Hello,

I have a list of unique account numbers in columns A, B, and C. How can I tell if any of the same account numbers appear in a different column?

Thanks a lot! It really helped me in completing my task of vlookup from 1 million records sheet.

How can I match two columns, say patient ID and date of visit and then retrieve the test result from a array of multiple visits by the same patient? ie there are results for the same test from multiple visits.

You could try concatenating the vlookup, that might help.

I have a list of data (numbers). I want to find if any of them are greater than 9 and if so look in all columns to the right of it for values greater than 0 (looking for 2 more). There are 4 outcomes 1) no >9. 2) >9 But no >0. 3) >9 and 1 that is >0. 4) >9 and 2 that are >0. All with more than 2 would return the value if 2 were met.

What group of functions would I use to make this happen.

John:

Can you post a small example of your sheet with some sample data?

Here is a link to my spreadsheet on google drive - I was not sure how to post it here https://drive.google.com/file/d/1jfoMPEQQhsAA90tyv43K3p9FqF3LAyFv/view?usp=sharing

I have three columns of data that are plotted on a graph. You will see on the graph two arrows, and I would like excel to return the x axis values (frame number) for where these arrows point (heel strike). This should be more accurate and time effective than me doing it manually / visually.

Frame number for heel strike 1 is defined by the GRF data where it first meets or exceeds the threshold displayed in G9. Manually I can see this is frame number 80, but I want excel to return it to me. To find the frame number of heel strike 2 excel will now need to use a velocity threshold. So, based on the previous heel strike velocity value can excel find the next occurrence of this velocity value. Ideally the data point either side of this value should be greater to ensure it is heel strike, and not another point on the graph where the magnitude of velocity is similar. I have tried using the match and index formulas but haven’t got it work. I not sure if there are better functions to use than this.

Sheet 1

Line# PO Qty Reciver

2 222000 10 A20535

6 222000 15 A20587

9 222000 20 A20687

Sheet 2

line# PO Receiver

2 222000 A20535 ;A20587;A20687 (Answer)

I need the answer by making formula in Sheet 2 as display above.

Please help

Request your help in below issue. Want to match the cell value in column but unable to do that. Please help me.

Column1 Column2

2133 GMA

2133 MCA

2133 MCA2

6488 USI

6488 GMA

7645 MCA2

7645 USI

6488 NOT

Column4 column5(GMA) Column6(MCA2) Column7(MCA)

2133

6488

7645

Request your help in creating the formula that can match the value against column4 from column2 and column2.

Hi... I am working on pulling information from one tab containing several columns of numbers into a separate tab. I used the index function and it works great, but only for one instance of the "search" box. I'm using it to pull information from various events that have occurred at the arena in which I work. How would I adjust the formula to make it pull all of the events that have the same name? For example, Jimmy Buffett has performed multiple times here, but when I type "jimmy buffett" in my search cell, it only pulls data from one show, when he has has four shows here.

Plsss help me, how can I lookup Apple3 & Orange4 value-

Apple1 80

Apple2 100

Apple3 90

Orange1 120

Orange2 220

Orange3 180

Orange4 160

Please help me to match information in order to return the correct code to Column A.....Column B (desc) contains information to be matched to column C (type) and then return Column D (code) to Column A....Column B is a description column and contains different information to describe type, but is all the same. Thank You for your Help!

Ex.

B C D

1 Motor Truck Sc Motor Truck Sc MTS

2 Truck Sc

3 MTS

Hi, My data is A4:J22.

I have column B which contains the category name, used multiple times.

I have column F containing a dollar value amount still to be paid.

In cell K3, I want put the total dollar value (from column F) for specific text "Meal Entertainment" in column B.

Eg:

Column B: Column F:

Meal Entertainment $20.00

Living Expenses $1,000.00

Living Expenses $50.00

Meal Entertainment $100.00

So, in column K3, I want to end up with an amount of $120.00.

Thanks in advance.

Thanks. I will give this a try.

THANK YOU!!!! It works perfectly.

Hi,

Which formula do I put in D2 to achieve the following?

If A2 contains all the text (consecutively but not an exact match) from any cell from range B2 through B50, then display the corresponding text that's currently located in column C in that corresponding row. So if it finds that A2 contains text (consecutively but not an exact match) that exists say in B47 then it should display the text from C47 in column D2.

Your help would really be appreciated

Hello. I am working on a spreadsheet and trying to figure out the best way. What I need is to find a match from the sheet I am working on which starts on E3. I want to be able to look on the same row on a different sheet that matches the text in E3. It will have a range to match from E3-J3 on the other sheet. However, I do not want it to simply return the value found in that matches, I want it to designate text for each column. Basically if row E3 has the text Cookie in it and it finds a match on the other sheet row 3 in the columns E3-J3 that also contains Cookie, how can I make it return a value based on the column it is found in? Any suggestions would be greatly appreciated.

Hello,

I am trying to reference a sheet that runs horizontally and use INDEX MATCH to fill in another sheet that runs vertical. But is based on multiple criteria.

IE :

Customer Measure wk 35 wk 36 wk 37 wk 38

Erik Retail $9.99 $9.99 $9.99 $9.99

Erik Cost $4.50 $4.50 $4.50 $4.50

Erik Sellout FCST 100 100 150 100

Erik Channel Inventory 250 150 0 100

I need to look up "Erik", by "sellout FCST" by "wk 37"

I understand INDEX and with MATCH which was a fantastic tutorial. But i am having trouble adding this small example above.

Thank you for any help provided.

E

Hi,

I need to look up for a multiple colums with offset for client invoice # po# amount details etc. Please help.

Regards

Rashmi

Good day Svetlana,

I hope you will be able to help me. I have been going back and fourth between whether to use a macro or formula to solve this problem and am still not sure.

I have two columns from one spreadsheet and 3 columns from another that I first need to line up and match the invoice numbers from each of the two sets of columns and then I need to find the difference between the values of the other two columns from each set. The last column will tell me who VP those differences will be assigned to.

This INDEX/MATCH formula seems like the best (formula) method to attempt, but I have over 7000 rows that I need to line up and find the differences for each all at the same time.

The best (macro) method I have found is from here: http://sites.madrocketscientist.com/jerrybeaucaires-excelassistant/text-functions/line-up-matches and it works almost perfectly, except for the last 400 rows, the macro splits them up in two columns despite the fact that they still match each other.

If you happen to know how I can achieve this through a formula, I would appreciate any and all help on this one.

Thank you very much Svetlana.

Dennis

I am trying to get a formula to lookup a "itemNo" and search for the lowest 6 bidders in a table as given below. Would greatly appreciate your support.

SEARCH Item_02

No of Bidders 6

Class Bidder Value

1 LISTEC HOLDINGS #VALUE!

2 HEMSONS #VALUE!

3 ANALYTICAL INSTRUMENTS #VALUE!

4 LABORATORY EQUIPMENTS #VALUE!

5 AVON #VALUE!

6 HI FI CENTER PROJECT #VALUE!

SUPPLIERS Item_01 Item_02 Item_03 Item_04

LISTEC HOLDINGS Rs. 225,000 Rs. 29,688 Rs. 83,000 Rs. 68,000

TECHNO INSTRUMENTS N/Q N/Q Rs. 974,370 Rs. 1,583,090

ROTEX N/Q N/Q Rs. 650,000 N/Q

AVON Rs. 518,790 N/Q N/Q N/Q

ATA INTERNATIONAL N/Q Rs. 79,000 Rs. 978,000 Rs. 1,490,000

CAN COM Rs. 140,000 Rs. 6,500 Rs. 1,450,000 Rs. 2,350,000

HI FI CENTER PROJECT Rs. 585,800 Rs. 18,300 Rs. 331,000 Rs. 321,000

HEMSONS Rs. 369,860 Rs. 99,750 N/Q N/Q

ISLAND WIDE SCIENTIFIC N/Q N/Q Rs. 4,136,000 Rs. 2,811,000

CLARION INTERNATIONAL Rs. 1,534,000 N/Q Rs. 970,000 Rs. 1,165,000

SALID ZONE N/Q N/Q Rs. 627,300

RAMATAS GLOBALTRADING N/Q N/Q Rs. 1,440,000 Rs. 1,760,000

Would like to ask if there is also an alternative to this if you are looking for cells containing a certain value. The thing with the index-match formula is that it finds for the exact value. it is similar to the vlookup with approximate match. Thing is the data is on the right side so I'm needing a left lookup formula with approximate match, not exact match.

Thank you for those who can answer my query.

I have two columns that are pull down lists and I want to to pull in the required value of the intersections based on the selection from the pull down lists... I have a basic risk register developed that I would like to correlate the correct risk value... For example I have a consequence pulldown list (AK11) and a likelihood pull down list (AL11) and I want to match the correct value into AK12... the table that I am using to reference is a simple 5 x 5...

I cannot seem to get the index table and match formula to work - I either get a 0 or no value?

I have a scenario, I want to pickup data from another sheet where in like following

Name/month/place

A/apr-18/x

A/apr-18/y

How do I lookup the place from this sheet to another using index and match. Conditions are place is unique bit name and month will get repeat so it's a kind of multiple criteria. I have done this through vlookup by added a column but I want to know in this format

I need formula to display the lowest vendor for each row. Can anyone help with this as the Index function uses range which is giving error due to values are located in alternate columns.

Thank you

| Vendor | Discount | Price | Vendor | Discount | Price | Lowest vendor|

Product 1| AAA | 15 | 2000 | BBB | 10 | 2500 | ???formula |

Product 2| CCC | 15 | 1500 | DDD | 20 | 1000 | ???formula |

I am trying to sort a Christmas list i have made on Open Office into my grandkids names. The list I made has 3 main columns..A,B and C with multible columns.... D,E,F,etc.with "x' in them for each person that gets that gift. I would like to write a formula that would copy column A,B & C for the person in say D column(Caitlin) that has an x beside it. I tried writing a formula for say a-1 that says =if(d629="x";+a6290 but it doesn't work. I would also like for it to move to the next row under D if there is no x in d629.

If you could help me out, I would greatly appreciate it.

Thanks and ...HAVE A GREAT DAY and a MERRY CHRISTMAS!!!!!!

I have column A2:A10, B2:B10, C2:C10, D2:D10, with random name and few are matching within. Also in same sheet from A13 to A75 have main name table, now I want EXACT MATCH if any name MATCH (priority) 3 times or 2 times within A2:A10, B2:B10, C2:C10, D2:D10 if 3 times match need HIGHLIGHT exact NAME in main table (A13 to A75).

If possible please help me, Thanks in advance.

The only practical advantage I'm seeing over vlookup from the article is if you want to look left or if you have a HUGE file, although I've never encountered any noticeable lag with vlookup even in gigantic files.

Most users don't lookup cells with over 250 characters.

If you use Tables instead of ranges, then inserting columns/rows will not affect vlookup.

You can use Sumif(s) to obtain the same response as the last array example.

Vlookup allows approximate matches and the index/match also requires values to be sorted in either increasing/decreasing order.

Am I missing another advantage that allows more flexible lookups, i.e. names that may not be spelled exactly the same way??

Hi ,

I am struggling with a data table.

I have one parameter in first column , i have a value to lookup in an array pertaining to a particular Row based on values in 1st column.

I have to return the collumn hedder data for theat particular indexed Row(Based on parameter in 1st col ) & Column (Based on the desired lookup value )

Hope you understood my problem.

Hi

Great tutorial. I am unable to find a solution for an issue we have. I have tried combinations of SUMIF and VLOOKUP without success.

We have a roster built in Excel and this has a range of duties in rows as below

Date1 Date2 Date3 Date4 Date5

AD01 BN01 BN01 PH01 ML07

The codes refer to a number of sectors in a named range "Duties" and the number of sectors are in column 3 of that range. AD01 = 2, BN01 = 3, PH01 = 4, ML07 = 1

What I need is a sum that totals the row, so in the example above, the result will be 13 (2+3+3+4+1).

Any help will be appreciated.

I have a table with a lot of data - need to take column A (product ID) and all of the MATCH Column A take and add all of the numbers from Column C (Qty) and Column D (price) and Place in new table with Product ID, Product Name, Total QTY, Total Price, and Average Price (( column B product description))

good day, i'm using v lookup but want to try the Index Match. problem is i've got double dates because i work on 2 shifts. obviously if says #value. how can i make this work?

I'm having issues with INDEX/MATCH using a large data set (180,000+ rows, 15 columns). The value in A2 is 40000001. The formula I am using is =INDEX($A$1:$O$74190,MATCH(A2,$L$1:$L$74190,0),15) and it results in a #N/A. However, when I change it to =INDEX($A$1:$O$74190,MATCH("40000001",$L$1:$L$74190,0),15) it pulls in the correct value. Why will it not recognize A2 as being 40000001?

Hi, Svetlana. Thank you for a great tutorial. Unfortunately, I'm quite new at Excel, and have trouble applying INDEX/MATCH in my sheet. I hope you can help. Here goes: I have one summary tab (X) where each column's data would be ported over to different tabs (Y) in the sheet. Each column of X will be numbered at their corresponding topmost cell from 1 to 10, and each Y tab will be labelled from 1 to 10 in a specific cell. Would it be possible to match/lookup X 1 to Y 1 (X 2 to Y 2, and so on) so that the range of data in column X 1 ports over to a column in Y 2? (I hope what I wrote makes sense).

Sorry. For the last sentence, I meant to port the range of data in column X 1 onto Y 1.

Hi, Thank you for this useful information about index & match. It is very useful to us and it will save time to us for our work.

Hi Svetlana,

The fantastic thing about Index Match is it solves most of the troubleshooting issues that arise from the other lookup functions. You can find a related value in any table at all, searching on any value you have. The other file doesn't have to have the same set of values on the search variable, nor does it have to be sorted in any order. So Index Match is amazingly powerful, flexible and accurate. Of course it does takes some concentration to work with it.

I first figured out the Index Match combination back in the 90's when I was doing heavy analysis of data. I'm glad to see it's eventually getting to be better known. It would be a lot better known if Microsoft made it into a single function, which would be easier than combining two functions yourself.

hello i am having some trouble with my index match function i am usung it to return one size below my input size for instance when i input a size D10.75 it returns D10.01 (the way our measurements work) but when i move to a size under 10 ( D9.4) it will return our largest size (30) just wondering if anyone has had similar issues i have not found any errors with sizes above 10

please help. i have 3 columns. how to find the value of Bus 3 & car 3 values using index and match functions

col 1 col 2 col 3

bus 1 2100

bus 2 200

bus 3 500

car 1 200

car 2 300

car 3 400

Please help!!! I have a large workbook contains 100+ worksheets. on Each worksheet I have a product number in column B and the worksheet name in column c

In a summary sheet I have a list of product numbers in column D.

Is there a way to use Index and Match to search the entire workbook in Column B of each worksheet, for the product number located in my summary sheet in column D and return the worksheet name located in column C of each worksheet?

Thank you so much!

Hi Madam,

Today I am trying two-dimensional VLOOKUP formula e.i(=INDEX($A$1:$E$11, 4, 5, 0)).

I need to try =INDEX($A$1:$E$11, 5, 4, 0)).....Is it possible??

pls help

So can I use the index & Match with named Ranges?

I keep trying but it keeps coming back N/A, (A value is not available)

Thanks

Hi! I just need the same formula that Lee-Anne requested above.

Thank you!

Good afternoon, I am using the array formula to match a single value, I was wondering what can I change to get all the lower than $k$1.For example, if I type 300 in $K$1 I want the system to go and find all the values between -0 to 300 included.

=IFERROR(INDEX(Data!$A$9:$A$900,SMALL(IF(COUNTIF($K$1,Data!$H$9:$H$900), MATCH(ROW(Data!$H$9:$H$900), ROW(Data!$H$9:$H$900)), ""), ROWS($A$1:A1))),"")

It would be great if you can help me.

i am trying but it is not matching

i am able to get the value but it is not matching

=INDEX([12.xlsx]Sheet1!$F$2:$F$141,MATCH([12.xlsx]Sheet1!$E$2:$E$141,P6:P18,1))

Pulling my hair out now.

Main Data table has skills in column A, Names across the top in row 5, and the data that links these are 1-5 (skills matrix basically).

I'm trying to now (on a separate tab) pull the info per individual, in that on a new sheet, I have a list of the names, but to the right of them (in multiple cells) have all the skills that they have a 5 against. (Basically, trying to get a list of all their top rated skills).

Rough look of data;

Jay | Chris

Redhat 5 5 | 4

Redhat 6 4 | 5

AIX 7 5 | 3

From here, I'd like the formula to look through Jay, and next to his name (in the new sheet) pull Redhat 5, then AIX 7. For Chris it would just be Redhat 6.

Hope someone can help!!

Hi! How can I add more criteria to the INDEX MATCH formula when looking up at let's say 5 parameters to get more than one return, i.e. looking up suppliers criteria to return supplier names? I've managed to utilize INDEX MATCH but if there is more than one supplier matching the criteria, the formula only returns the first supplier name.

THanks!

Hi Team,

I am trying to use index match in the following situation, could you please assist with this? :

tab1 : current month data - FTE details containing staff number, name, FTE,Position,auto pay-Y/N

Tab2 : previous month data - FTE details containing staff number, name, FTE,Position,auto pay-Y/N

I want to see all the leavers so I am using the following formula, please let me know how to correct this :

=if(index(current month staff id,match(1,(current month auto pay=Y)*(current month=Jul19)*(previous month staff id=current month),0))=previous month staff id," ","Leaver")

Hi, if there a “name “in a2,a6,a7,a16 etc how can I fetch data of b2,b6,b7 and so on? I tried using index but it ends up with showing result of b2 only

NEW STOCK

TOTAL

32

OLD STOCK

TOTAL

45

OLD 0-100 DAYS

40

OLD 100+ DAYS

5

NEW 0-100 DAYS

RESULT REQUIRED

32

NEW 100+ DAYS

0

It seems a Windows update has now broken this formula and it produces a #SPILL error message. Can you produce a workaround for this?

Hi Graham,

I've retested the formulas in our sample worksheet. All seem to be working normally. Can you please specify exactly which one returns an error?

Hi,

I try to lookup formula match with any of two different range. It means first look with A4 suppose if details not available means get the data with B4 cell.

Hello,

I have a table of values where I want to pick a specific unit, look for the last (previous) "on" for that unit, and record/calculate the time in between when the unit was turned on and when it was turned off.

I.E. - Lights - Jerry turned the lights ON @ 11/1/2019 10:56AM and OFF @ 11:05AM so the DURATION = 00:09:00.

Person TIME ON/OFF UNIT DURATION

Dan 11/1/2019 10:00AM OFF Lamp

Jerry 11/1/2019 10:56AM ON Lights

Tom 11/1/2019 10:59AM ON Door

Dan 11/1/2019 11:02AM ON Car

Dan 11/1/2019 11:03AM OFF Car 00:01:00

Jerry 11/1/2019 11:05AM OFF Lights 00:09:00

How do I get the DURATION cell in the "Lights" "OFF" line to populate based off the TIME from the last "Lights" "ON" line?

Thank you!

I am using the formula to copy values from one sheet to other, from a table with 8 columns. The value has to come from the 8th column. The formula is working fine. Kindly inform if any variable can be put instead of writing 8.

Thanks.

Sheets("EXE_1").Select

Range("O4").Select

ActiveCell.FormulaR1C1 = _

"=IFERROR((INDEX(MIN_WIP!R4C17:R20C25, MATCH(EXE_1!RC[-13],MIN_WIP!R4C17:R20C17,0),8)),""0"")"

Hello Manas!

It is possible to insert an expression, which will return a number, instead of "8" in your formula. However, to give you a full and accurate answer, additional information on the result you would like to get is required. Moreover, I would like to see your formula in standard view, not R1C1.

Hi all,Good day

I need some help.

I have a list of 5000 items.

For each item, many Purchase orders have been raised.

how to extract item wise Purchase order numbers. Tried VLOOKUP and pivot , not able to get.

Hello ANAND!

I’m sorry but your task is not entirely clear to me.

What is " item wise Purchase order numbers"? What exactly do you want to count? How many purchase orders were there? Amount?

For me to be able to help you better, please describe your task in more detail. It’ll help me understand it better and find a solution for you. Thank you.

I am looking to match based on two unique numbers that have the same result. The lookup tables or array results are in a different

Example.

Column A = US product ID #

Column B = CA product ID #

Column C = the product name of both Column A and Column B of that Same row, so can have either a corresponding US or CA Product ID

Example: US1234 or CA123 = pencils

For the entry, they will only enter in product ID number below, and I want to dynamically return the product name without knowing if it will be a US ID or a CA iD

Product ID Product Name

Thanks

Hello Joseph!

If I understand your task correctly, the following formula should work for you:

=IFERROR(INDEX(C1:C5,MAX(IFERROR(MATCH("*"&$E$1&"*",A1:A5,0),-1), IFERROR(MATCH("*"&$E$1&"*",B1:B5,0),-1))),"ERROR")

where E1 -- Product ID

I hope this will help, otherwise please do not hesitate to contact me anytime.

I have name of students in column B and grade scored in column BT in sheet 1. I want to pull the name of students who scored A to sheet 2, B to sheet 3, C to sheet 4 etc

Hello!

Read more about Vlookup multiple matches and return results in a column in this article.

You can use our ready-made solution.

I'd recommend you to have a look at our Ablebits Tools - Split Table.

This tool is available as a part of our Ultimate Suite for Excel that you can install in a trial mode and use for 30 days for free: https://www.ablebits.com/files/get.php?addin=xl-suite&f=free-trial

I have a result set as below:

COL A COL B

1111987 1224

1119361 1072

1119361 1223

1119361 1224

1123961 1223

1123961 1224

1124136 1072

1124136 1223

Since No# - 1124136, isn't having a combo of 1224, I wish to have that as a result.

Please assist.

Hello!

If I understand your task correctly, the following formula should work for you:

=INDEX(A1:A8,MATCH(0,COUNTIFS(A1:A8,"="&A1:A8,B1:B8,"=1224"),0))

I hope this will help

How do I write the following formula:

If B16:B46 are all Y, then this cell should be Y. If any of the cells between B16:B46 are N, then this cell should be N.

Also, how do I write this formula with two factors:

If B16:B46 AND C16:C46 are all Y, then this cell will be Y. If any of those cells have an N, then this cell should be N.

Hello Mohammed!

If I understand your task correctly, the following formula should work for you:

=IF(ISNUMBER(MATCH("N",B16:B46,0)),"N",IF(IFERROR(MATCH(1,IF(B16:B46="Y",0,1),0),"Y")="Y","Y",""))

I hope this will help

Thank you so much Alexander! I really appreciate your help.

When I tried your formula, the cell defaults to Y, even if B16:B46 are blank. But as soon as an N is put in any of the cells, the cell will turn to N. So anything but an N will keep the cell as Y. I was trying to have it such that even a blank cell in B16:B46 would result in the cell having an N. This will work for now, though. Thank you again! I very much appreciate it!

Hi, i'm trying to create a formula that allows me to search a column for a reference number which exactly matches the reference number on another worksheet within the same workbook. I need it to return a Yes or No.

On worksheet 2 In cell H3, I would like it to return a Yes if the ref number in Cell E3 matches any of the ref numbers on Worksheet 1 Column E Range E2:E500.

Hello Lisa!

If I understand your task correctly, the following formula should work for you:

=IF(ISNUMBER(MATCH(E3,Sheet1!E2:E500,0)),"Yes","No")

I hope my advice will help you solve your task.

Hello excel Guru's, I am hoping someone may be able to asst me with creating a formular for the below? It's beyond my basic excel capabilities.

Column A contains task numbers (i.e SMT001) and column P contains a task duration in seconds(i.e 11040). I need a formula that can search column A for duplicate task numbers and add the corresponding task durations in column P to give me a total task duration. is this even possible in excel?

Any guidance would be appreciated.

Thank you for this, I have used it so often and it has saved me SO MUCH time. Just one thought, there has been a change in how Excel handles the function and you now need to add "@" before "lookup value" to prevent a SPILL error. Perhaps you can update the formula?

When I put in this formula I get the N/A

result, =INDEX(MIN(IF(F2:F77>0,F2:F77)),MATCH(1,INDEX((L22=A2:A77)*(M22=B2:B77),0,1),0))

Column F is the result of another formula, What should I change to make this formula work.

Hello!

INDEX MATCH formula in Excel cannot find a lookup value. This N/A error is explained in this article above. Unfortunately, without seeing your data it is difficult to give you any advice.

Hi - I tried to use INDEX and MATCH together and have been getting a #VALUE! error. I tried to break it down, and created a cell with just the MATCH part in it. But no luck.

So I put the cells with identical (perfectly identical) long strings of text in them. I know they are identical because I pasted from one cell to the other. Next to these cells I created a cell with a simple IF condition to return YES if the cells with the text are equal. Indeed, it returned "YES" So I then created a MATCH formua in the next cell which reads something like: =MATCH(K850,J800:J900,0). The identical cells are in J850 and K850 respectively. Yet - no luck at all.

The text btw is "Care Instructions: Lid Cork, Use only for its intended purposes. Immediately wash and dry well after use, and keep dry when not in use. Do not overheat in the microwave or heat without water. Wash with care. Don't use abrasive cleansers or steel wool. Don't place near fire. Sudden temperature changes may break or shatter the product. While the glass is hot, don't pour cold liquids into it and don't place it to on a wet cloth or in a wet sink. Be aware that the lid may become stained with the odor or color of some foodstuffs.". Nothing personal or confidential so I decided to paste it here.

What am I doing wrong?

Hello!

Unfortunately, without seeing your data it is difficult to give you any advice. Could you please describe your task in more detail and send us a small sample workbook with the source data and expected result to support@ablebits.com? Please shorten your tables to 10-20 rows/columns and include the link to your blog comment.

We'll look into your task and try to help.

Hi,

Hi, I'm trying to create a formula that allows me to search a column for a product number which exactly matches the product number (in a column) in another workbook. The first workbook has a product cost associated with it, in a separate column. The second workbook has a price associated also (which is a price change in a separate column).

I would like to populate a new column in Workbook 1 with the new price. (price increase)

Workbook 1 has hundreds of items and cost prices.

Workbook 2 (only select items from original list in Workbook 1) Price Increases

The item numbers are not on the same line in the two workbooks.

I need to match the item numbers from the two workbooks and bring the price increase associated with the product item number (from Workbook 2) into the original workbook. (Workbook 1)

Hello!

Unfortunately, without seeing your data it is difficult to give you any advice. Please check out the following article on our blog, it’ll be sure to help you with your task: How to Vlookup from another sheet in Excel

Hope you’ll find this information helpful.

Hi, I am trying to fetch a value using formula but unable to do so as it is returning me #REF

Formula i used is as below.

=INDEX(Priority!A5:G16,MATCH(A16,Priority!A:A,0),MATCH(B15,Priority!B4:G4,0))

Could you please help !!

Hello!

The #REF error means that your INDEX function wants to show a value that isn't there. For example, in the range A5:G16 there are 12 lines. You want to show the value from the 14th line.

I hope my advice will help you solve your task.

This is what my sheet is

P1 P2 P3 P4

March 4 2 7 9

December 5 1 8 6

This is what my Sheet is

P1 P2 P3 P4

March 4 2 7 9

December 5 1 8 6

and this is what i am trying to find

P3

March 2

using formula "=INDEX(A21:E23,MATCH(A17,A21:A23,0),MATCH(B16,B21:E21,0))"

But it is returning me value of P2 instead of P3. Can you please help why it is returning value of a column before.

Hello!

Sorry, it's not quite clear what you are trying to achieve. What cells are your data recorded in? A21:E23? No! Do you want to get several values with one formula? Describe the expected result more clearly. What is written in A17 and B16?

I HAVE THE MANY AMOUNTS IN ONE ROW FROM 100 TO 1500 AND I WANT TO MAKE THE MATCH/GROUP/BATCH OF 2500 HOW CAN I DO IT IN EXCEL PLS REPLY

Hi,

I’m sorry but your task is not entirely clear to me. For me to be able to help you better, please describe your task in more detail. Please specify what you were trying to find. Give an example of the source data and the expected result.

It’ll help me understand it better and find a solution for you.

This is a question in a similar vein. A spreadsheet containing a column of random text, and each line of this text contains a "Unit Number" somewhere in the text. I tried to write LEFT, MID, RIGHT rules to extract these "unit numbers" onto a seperate column, but the positions in the text are even too random for that.

So I would like to take a different approach. (1) Have a complete list of the "Unit Numbers" on a seperate sheet. (the complete fleet) and (2) then reference this list against the random text. If it finds a match to the UN list anywhere in the random text, it deposits that Unit Number that it found on the UN list onto the find formula column.

Any suggestions for a MATCH or VLOOKUP or some other formula that would do that?

Hello!

Unfortunately, without seeing your data it is difficult to give you any advice. Please provide me with an example of the source data and the expected result.

=INDEX(Column_1,MATCH(1,MMULT(--(Draw_Data=Your_Selection),0)))

Draw_Data => rows of 7 unique numbers

Your_Selection => 7 unique numbers chosen

In the calculation steps produces a series of 7 "TRUE"s ... in it's output (and many "FALSE" also). How could I obtain a result of "Yes" to the function based on the 7 "TRUE"s or "NO" if there are not 7 "TRUE"s in a row?

Thank you for your time and efforts,

Myron

Hello!

Your task is not completely clear to me. Unfortunately, without seeing your data it is difficult to give you any advice. Please provide me with an example of the source data and the expected result.

Could you please describe your task in more detail and send us a small sample workbook with the source data and expected result to support@ablebits.com? Please shorten your tables to 10-20 rows/columns and include the link to your blog comment.

We'll look into your task and try to help.

Milestones in Column E of input-contract sheet as, "Effective date", "Payment 1", "Export License", "Kick-off meeting", etc.

Trigger event in Column C of input-contract sheet as, "Contract Registration", "Effective date", "payment 1", "export License", etc.

Milestone date in column E of input-contract sheet (which is calculated based on conditions) as, "1-Jan-21", "1-Jan-21", "22-Jan-21", "5-Feb-21", etc.

I want to build a financial model in another sheet (model sheet), for that I used the transpose function entered as an array formula to transpose the values of column E in a row into the model sheet. it worked well.

now, I wanted to bring in the milestone dates associated with those milestones and wanted to use the INDEX MATCH function. This is what I typed in the model sheet =INDEX('Input-contract'!E22:E52,MATCH(Model!B20,'Input-contract'!A22:A52),0). where Model!B20 is "Effective date"

I wanted the formula to look for the date when the "effective date" took place which should have been 1-Jan-21. However, the formula returns me the value of 19-Nov-23.

all cells are formated appropriately, not sure why this happening. can you help?

Thanks,

Luis

Hello!

Unfortunately, without seeing your data it is impossible to give you advice.

I'm sorry, it is not very clear what result you want to get. Could you please describe your task in more detail and send us a small sample workbook with the source data and expected result to support@ablebits.com? Please shorten your tables to 10-20 rows/columns and include the link to your blog comment.

We'll look into your task and try to help.