Lookup using INDEX and MATCH with two criteria

后端 未结 3 1239
面向向阳花
面向向阳花 2020-12-16 04:27

I am trying to achieve a basic lookup using INDEX and MATCH. My layout is:

Sheet 1
NAME | SITE | DATE

Sheet 2
NAME | SITE | DATE

I want the \'SITE\' co

相关标签:
3条回答
  • 2020-12-16 05:09

    Here is the solution without using an array and without using a helper column:

    <i>=INDEX(Table[returnColumnName], 
    MATCH(1, INDEX((Table[lookupColumn1] = "arraysAreSlow") * 
    (Table[lookupColumn2] = "avoidWherePossible"), 0, 1), 0))</i>
    

    Here is a more advanced solution that performs a grid lookup:

    <i>=INDEX(Table,
    MATCH(1, INDEX((Table[lookupColumn1] = "arraysAreSlow") * 
    (Table[lookupColumn2] = "avoidWherePossible"), 0, 1), 0),
    MATCH("returnColumnName", Table[#Headers],0))</i>
    
    0 讨论(0)
  • 2020-12-16 05:15

    You can use an "array formula" like this

    =INDEX('Sheet2'!B:B,MATCH(1,(A1='Sheet2'!A:A)*(C1='Sheet2'!C:C),0))

    CTRL+SHIFT+ENTER

    ....or you can add another INDEX function so that it doesn't need to be "array entered", i.e.

    =INDEX('Sheet2'!B:B,MATCH(1,INDEX((A1='Sheet2'!A:A)*(C1='Sheet2'!C:C),0),0))

    or another way is to use LOOKUP like this

    =LOOKUP(2,1/(A1='Sheet2'!A:A)/(C1='Sheet2'!C:C),'Sheet2'!B:B)

    That latter method would give you the last match if there is more than one......

    0 讨论(0)
  • 2020-12-16 05:20

    I suggest the conventional solution to problems of this kind is to concatenate the pair of search terms (ie a helper column) and to add the concatenated pairs to the lookup array.

    SO18767439 example

    In the example above the concatenation of what to look up (rather than where to look up) is done 'on the fly'.

    0 讨论(0)
提交回复
热议问题