INDEX & MATCH in Excel - better alternative to VLOOKUP

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

In a couple of recent articles, we 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 wonder. Because VLOOKUP has numerous limitations that can prevent you from getting the desired result in many situations. On the other hand, the INDEX MATCH combination is more flexible and has many awesome features that make it superior to VLOOKUP in many respects.
Excel VLOOKUP or INDEX / MATCH - which is better?

Excel INDEX and MATCH functions - the basics

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.

INDEX function - syntax and usage

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.

MATCH function - syntax and usage

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 (default) - approximate match (next smaller).
    • 0 - exact match. 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 - approximate match (next larger).

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.

How to use INDEX MATCH function in Excel

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:
Source data for INDEX MATCH formula

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 3rd 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))
Excel INDEX MATCH formula

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.

Tips:

INDEX MATCH vs. VLOOKUP

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.

4 main reasons to use INDEX MATCH instead of VLOOKUP

  1. 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.
  2. 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.

  3. 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.
  4. 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.

To discover the nuanced differences between INDEX MATCH and XLOOKUP, explore the in-depth analysis in this guide: Excel XLOOKUP vs INDEX MATCH.

Excel INDEX MATCH - formula examples

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.

INDEX MATCH formula to look up from right to left

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))
Look up values to left using INDEX MATCH

Tip. If you plan to use your INDEX MATCH formula for more than one cell, be sure to lock both ranges with absolute cell references (like $A$2:$A$10 and $C$2:4C$10) so they won't get distorted when copying the formula.

INDEX MATCH MATCH to search in rows and columns

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))
INDEX MATCH MATCH formula for two-way lookup in Excel

How this formula works

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!

Excel INDEX MATCH to look up multiple criteria

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))}

Note. This is an array formula that must be completed with the Ctrl + Shift + Enter shortcut.

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:
The INDEX MATCH formula to look up multiple criteria

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:
A non-array INDEX MATCH formula with multiple criteria

How these formulas work

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.

Excel INDEX MATCH with AVERAGE, MAX, MIN

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.

INDEX MATCH with MAX

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))

INDEX MATCH with MIN

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))

INDEX MATCH with AVERAGE

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).
Using INDEX MATCH with AVERAGE, MAX, MIN

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

Using INDEX MATCH with IFNA / IFERROR

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:
Using INDEX / MATCH with IFNA function to trap N/A errors

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!

Practice workbook for download

Excel INDEX MATCH examples (.xlsx file)

600 comments

  1. I do not understand why my Index Match formula is not working. Skill level is low. "=INDEX($D$2:$D$1778,MATCH(B2,$C$2:$D$1778,0))"
    Col A | Col B | Col C | Col D
    #N/A | AHF,1KIT10 | ONDA2VIA2 | 14470
    #N/A | ANTI30002 | COVI30VI4 | 12404
    all the
    way

  2. Looking to build a table that will use the following information I would like the table to place student name under a floor #, but if "John" lives on floor 1, he can not be entered on floor 1. It needs to skip to the next name. How can I do that?

    Floor Student
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Students
    John
    Jeff
    Alice
    Jayne
    Bob
    Sherri
    Michelle

  3. This approach works great except when you want to use a wildcard like '*' or '?'. For examples, suppose we want to get the value for all with an 'n' in their Product Name. I would like to use a wildcard like '*n*' to get the result.

    The problem I am trying to solve is where I have data in a Table on a separate worksheet with four columns. Let's call them Column A, B, C, and D. On another worksheet I have a Table where I list criteria for various Organizations (let's call them Me, Myself, and I). This criteria table has the same columns of A, B, C, and D yet not all cells have data in them. So whenever data exists (including wildcard data like 131*, *3069, *.46.*) under one of these criterion Columns, I want to extract the data in the Cell for Column B of the first worksheet mentioned. I applied the concept and got good results using a Choose function to get the correct formula since an empty cell will cause the N/A error, and now the only problem is where a wildcard criterion exists. In other words, the formula on worksheet2 is

    =INDEX(Worksheet1[B],MATCH(1,INDEX((A3=Worksheet1[A])*(B3=Worksheet1[B])*(C3=Worksheet1[C])*(D3=Worksheet1[D]),0,1),0))

    If any criteria for [A], [B], [C], or [D] has a wildcard whose data does exist in the Table in Worksheet1, I get an N/A error.

    Worksheet1 Table:

    A B C D
    1 zrt cfre ghnt 123wro
    2 abd S.42.3 klmd qrsU47
    3 doq 1315600 plov 123wro

    Worksheet 2 Table:

    A B C D E F G
    1 *l* Me
    2 abd S.42.3 Myself
    3 131* 123wro I
    4 zrt *nt Me

    Notice that not every cell in the Worksheet 2 Table has data and the data that is there contains wildcards.

    In Column G of the Table in Worksheet2 I would like to extract the data in Column B of the Table in Worksheet1.

    Thoughts? Help?

    • Hello!
      I don't quite understand what kind of result you want to get.
      ="nt*"="ghnt" --- The formula is wrong.
      To check if the substring "nt" is included in the text "ghnt", use SEARCH function

      =ISNUMBER(SEARCH("nt","ghnt"))

      If this is not the problem, explain what result you want to get from your formula.

      • I think I understand what Frank is saying and I get the same issue. In Svetlana Cheusheva's last example above, if I put a wild cards "*" in front of Dan (customer name) to indicate anything containing "dan" it returns an #N/A, see formula below how the wildcards would be used.

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

        In this formula example, imagine if there was a customer name that you wanted to pull that contained "dan" and not an exact match. How do you do it? Is there a workaround if you are trying to find a partial text in the table array. I tried with SEARCH and couldn't figure it out. Please help.

        • Hello!
          To find the number of the cell that contains the text "Dan" use the formula

          MATCH(TRUE,ISNUMBER(SEARCH("Dan",A2:A10,1)),0)

          I hope I answered your question. If something is still unclear, please feel free to ask.

  4. This page is great! I use this all the time.

    This formula in the "How to use INDEX MATCH function in Excel" section requires one more close-parentheses at the end:

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

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

    Thank you for this column!

  5. I have been dealing with this problem for days and after reading blogs and syntax on Match and Index, I still have not found any solution to my formula #Ref! error.

    I have three worksheets, two(lets call them "Required" and "Actual" of which I want to calculate the sum of a specific column based on 3 criteria and populate the result on my "master_sheet". The 3 worksheets are composed of different number of columns and rows; Required = 6806 rows and Actual = 6142 rows.

    I need to create three columns (on master_sheet) based on one of the criteria (level of expertise) as follows
    Required_Expert|Actual_Expert|Required_Inter |Actual_Inter|Required_Beginner|Actual_Beginner|

    I have written the strings Expert, Intermediate, and Apprentice to serve as my lookup cell for one of the criteria and those levels are listed in the cells of a column in Required and Actual worksheets.

    The other criteria on the three worksheets are Position, Division and Total hrs(the values I want to sum)

    Here is the formula to find the sum of total hrs based on Position and Division and feeding my master_sheet from the Required sheet:

    =SUMPRODUCT(--(Required!$K$2:$K$6787&Required!$E$2:$E$6787=master_sheet!A3&master_sheet!C3), INDEX(Required!$P$2:$P$6787,, MATCH(master_sheet!$I$2, Required!$O$2:$O$6787,0)))

    Required sheet
    K column: lists position, stored as text
    E column: lists division, stored as text
    P column: Total Hrs in decimals
    O column: Level of expertise
    master sheet
    A column: position
    C column: division
    I2: Expert lookup value

    Here is my issue, the formula worked for the first column on the master sheet but when I tried the same formula on the other columns I get #Ref! error no matter what, I changed the cell from I2 to K2 (lookup value) to look for Intermediate instead of expert and it gives me a #Ref! error. In addition, when I use the same formula with the corresponding cell reference but using the Actual worksheet it also gives me a #Ref! error.
    I do not know what I am doing wrong. Please help!

  6. i have a table with columns of data. Table has the following headers; distance, tee, fairway, rough, sand. In the case of this table the number in the distance column corresponds directly to a number in each of the other columns (and on the same row). I'm looking for a formula that will pull a corresponding number from the "tee", "fairway", "rough", "sand" columns. based on answeres given in a different sheet. I.e 140 (distance) and "Fairway". Im having difficuly figuring out how to get excell to look at or distinguish the correct column to pull from. Thank you for your help!

  7. Hi
    Great work!
    Thank you so much.

  8. Hi,

    I Need help with this scenario.

    I have two sheets Sheet A & Sheet B

    Lets Say

    Sheet A has 4 Columns (Data 1, Data 2, Data3, Data 4)
    Sheet B has 6 Columns (Data 1, Data 2, Data3, Data 4, Data 5, Data 6)

    Data 1 to 4 are same in both sheets

    But the problem here is the order of the data is not same in both the sheets, like if some x data is in Row 1 in Sheet A, it will be in some 100th row in Sheet B.

    How can we match and import the Data 1 to 4 on the sheet A and import the corresponding Data 5 & 6

    • How can we match the Data 1 to 4 on the sheet A and import the corresponding Data 5 & 6 in to Sheet A from Sheet B?

  9. Can I use and function inside of Vlookup.

  10. Thank you very much for your valuable suggestions. Much appreciated. .. :)

  11. ColA ColB

    Fruits Count
    Apple 10
    Orange 20
    Mango 30
    Apple 20
    Banana 10
    Orange 30
    Apple -30
    Orange -20

    Condition is:
    I need a unique array list of fruits in ColC and do not need the fruits on list whose count is 0. Here, Apple has count 0 as (10+20-30).

    Result may be:

    ColC

    Orange
    Mango
    Banana

    Could you please clarify me below condition. Can we use SUMIF function in Index+Match+Match. I had tried one formula to make output as ColC but did not work. Or, if you can suggest one will be much appreciable.

    {=IFERROR(INDEX(A2:A9,MATCH(0,COUNTIF($C$1:C1,A2:A9)+(SUMIFS(B2:$B$9,A2:$A$9,D2)0),0)),"")}

    Thank you very much in advance.

  12. Thank you very much for your kind and quick response. Much appreciated.

    But, could you please clarify me one condition. Can we use SUMIF function in Index+Match+Match. I had tried one formula but did not work.

    {=IFERROR(INDEX(A2:A9,MATCH(0,COUNTIF($C$1:C1,A2:A9)+(SUMIFS(B2:$B$9,A2:$A$9,D2)0),0)),"")}

    Please clarify on this.

  13. hi,
    I'm sure this is a very simple but I'm struggling in one situation. Need your kind assistance.

    ColA ColB

    Apple 10
    Orange 20
    Mango 30
    Apple 20
    Banana 10
    Orange 30
    Apple -30
    Orange -20

    Condition is:
    I need a unique array list of fruits in ColC and do not need the fruits whose count is 0. Here, Apple has count 0 as (10+20-30).

    Result may be:

    ColC (Sorted) ColC

    Orange Banana
    Mango Mango
    Banana Orange

    In addition, if this list can be sorted in alphabetical order by formula will be great. I'm using Excel 2016.

    Looking forward to your kind reply.

    Thank you very much in advance.

    • Hello!
      Your version of Excel has very limited options for solving your problem.
      You can use these instructions to get a list of unique values from column A.
      Then, in column D, you can calculate the amount from column B for each unique item. To do this, use the SUMIF function.
      I hope my advice will help you solve your task.

  14. i need an excel formula that will refer back to a chart to look up data and return the correct data. In my spreadsheet, I enter a width in A1, a Depth in B1, a Thickness (from a drop down list) in C1 and then I want the correct cost to populate in D1 based on a table on another worksheet. Can that be done? The table consist of all of the possible dimensions and their costs.

    Please HELP... anyone!

    Thank you sooooo much!

  15. I have a formula with INDEX and MATCH. I use this to get dates from one sheet to another (to keep it brief). In the column in sheet B are several empty cells. These empty cells in sheet B cause the cells in sheet A to be filled with '00-01-1900'. This makes sense, but I would like to fill these with a small text message: "No date". Instead of printing 'no date' it prints '00-01-1900'. How do I solve this?

    My current formula looks like this:
    =IF(sheet B!G2=" ", "No date", INDEX(sheet B!$G$2:$G$4408, MATCH(sheet A!H2,sheet B!$F$2:$F$4408,0)))

    • Hello!
      I believe the following formula will help you solve your task:

      =IF(B!G2="", "No date", INDEX(B!$G$2:$G$4408, MATCH(A!H2,B!$F$2:$F$4408,0)))

      I hope it’ll be helpful.

      • Hey,

        Thank you for your quick reply. It doesn't change anything. But I am using a Dutch version of Excel: therefore I translated my formula to English. The formula I have before me is this: =ALS(Inspecties!G2=" "; "Geen inspectiedatum"; INDEX(Inspecties!$G$2:$G4408; VERGELIJKEN(Hoofdbestand!H2;Inspecties!$F$2:$F$4408;0)))

        I tried to replicate your adjusted formula, but I get the same result. Can you look at my formula again? If you need more information, just say the word.

        Thanks,
        Patrick

          • Hey,

            Sadly, I get the same outcome :(.
            Can you think of anything else?

            Thanks,
            Patrick

            • Hello!
              Unfortunately, without seeing your data it is impossible to give you 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.

  16. 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.

  17. =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.

  18. 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.

  19. 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.

  20. 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?

  21. 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)

  22. 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.

  23. 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.

  24. 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?

  25. 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.

  26. 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.

  27. 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!

  28. 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

  29. 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

  30. 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

  31. 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.

  32. 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.

  33. 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.

  34. 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!

  35. 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.

  36. 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?

  37. 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

  38. 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

  39. 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")

  40. 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!

  41. 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!!

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

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

  44. i am trying but it is not matching

  45. 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.

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

  47. 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

  48. 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

  49. 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!

  50. 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

Post a comment



Thank you for your comment!
When posting a question, please be very clear and concise. This will help us provide a quick and relevant solution to
your query. We cannot guarantee that we will answer every question, but we'll do our best :)