Excel 多个VLOOKUP或索引匹配

Excel 多个VLOOKUP或索引匹配,excel,indexing,excel-formula,match,vlookup,Excel,Indexing,Excel Formula,Match,Vlookup,我尝试使用索引匹配返回基于多个条件的值。有人帮我做到了这一点,但我找不到添加其他标准的方法。我目前的计算公式是: =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))),"") 这将根据对标准“是”的回答,从我的数据列表中返回一个人的姓名 我需要再添加两个条件以返回更少的结果。这将基于月份和

我尝试使用索引匹配返回基于多个条件的值。有人帮我做到了这一点,但我找不到添加其他标准的方法。我目前的计算公式是:

=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))),"")
这将根据对标准“是”的回答,从我的数据列表中返回一个人的姓名


我需要再添加两个条件以返回更少的结果。这将基于月份和年份,两者都以数字形式显示在不同的单元格中,即
10
2015
。只有当行中的其他值为“是”、“10和2015时,我才想返回索引列表。如果您理解这些增量和行号的作用,那么这些增量和行号就不必要地复杂了

行(数据!$A$2:A2)
只是增加1、2、3。。。当你填满的时候。这可以简化为
行(1:1)
行(数据!$A$2:$A$2000)-行(数据!$A$2)+1
可以简化为
行($1:$1999)
,只要您意识到返回的是H2:H2000内的位置,而不是工作表上的实际行号。请注意,所有简化引用都没有使用工作表名称或列名称。它们根本不是必需的

此外,当您使用带有optiona6(忽略错误)的15子函数()时,可以快速处理条件。通过将不匹配的内容转换为
#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))),"")
=IFERROR(索引(数据!$H$2:$H$2000,小型(索引(行($1:$1999)+(数据!$K$2:$K$2000“是”)+(数据!$L$2:$L$200010)+(数据!$M$2:$M$20002015))*1E+99,),行(1:1)),“”)


⑨Excel 2010中引入了。它在早期版本中不可用。

这是fanatastic!非常感谢你在这方面的帮助。它占用了太多的时间,现在我觉得浪费了,正如我早些时候应该问的那样。很高兴它成功了。请记住,这些是标准公式,而不是数组公式。它们不需要像您原来使用的那样使用Ctrl+Shift+Enter。@AlexMoore您可以通过“接受”来完成这一步骤,就像这样输入答案。它将从“未回答”列表中删除此问题。( :