多个VLOOKUP或INDEX MATCH

我正在尝试使用INDEX MATCH来根据多个条件返回一个值。 有人帮助我了解了一点,但我找不到添加其他标准的方法。 我现在正在从事的工作是:

=IFERROR(INDEX(DATA!$H$2:$H$2000,SMALL(IF(DATA!$K$2:$K$2000="Yes",ROW(DATA!$A$2:$A$2000)-ROW(DATA!$A$2)+1,""),ROWS(DATA!$A$2:A2))),"") 

这将根据标准答案为“是”,从我的数据列表中返回一个人的姓名。

我需要再添加两个条件来返回更less的结果。 这将基于一个月和一年,都在不同的单元格,即102015数字显示。 当行中的其他值为“是”, 102015时,我只想返回索引列表。

如果你了解他们正在尝试做什么,那么这些增量和行数就不必要的复杂了。

ROWS(DATA!$A$2:A2)简单地递增1,2,3 …当您填装。 这可以简化为ROW(1:1) 。 只要你意识到你正在返回H2:H2000中的位置ROW(DATA!$A$2:$A$2000)-ROW(DATA!$A$2)+1就可以简化为ROW($1:$1999)而不是工作表上的实际行号。 请注意,没有一个简化引用使用工作表名称或列名称。 他们根本没有必要。

另外, AGGREGATE¹函数在使用optiona 6 (忽略错误)的15个子函数( SMALL )时可快速处理条件。 把任何不匹配的东西变成#DIV/0! 错误,只留下匹配的行。

XL2010及更高版本的标准公式:

 =IFERROR(INDEX(DATA!$H$2:$H$2000, AGGREGATE(15, 6, ROW($1:$1999)/((DATA!$K$2:$K$2000="Yes")*(DATA!$L$2:$L$2000=10)*(DATA!$M$2:$M$2000=2015)), ROW(1:1))),"") 

XL2007及更早版本的标准公式:

 =IFERROR(INDEX(DATA!$H$2:$H$2000, SMALL(INDEX(ROW($1:$1999)+((DATA!$K$2:$K$2000<>"Yes")+(DATA!$L$2:$L$2000<>10)+(DATA!$M$2:$M$2000<>2015))*1E+99, , ), ROW(1:1))),"") 

¹AGGREGATEfunction是在Excel 2010中引入的。它在早期版本中不可用。