2015-11-06 81 views
1

我想使用INDEX MATCH来根据多个条件返回一个值。有人帮助我了解了一点,但我找不到添加其他标准的方法。我从在一分钟的工作计算公式为:多个VLOOKUP或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))),"") 

这从我的基础上,回答一个标准是“YES”的数据列表返回一个人的名字。

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

回答

0

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

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¹ function使得条件快速的工作,当你使用子功能(SMALL)与optiona (忽略错误)。通过将任何不匹配的内容转换为#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))),"") 

¹AGGREGATE function用Excel 2010中引入的这是不在早期版本中可用。

+0

这是狂热!非常感谢你的帮助。它已经占用了太多的时间,现在感觉被浪费了,正如我以前所要求的那样。 –

+0

很高兴那个解决了。请记住,这些是标准公式,而不是数组公式。他们不需要按Ctrl + Shift + Enter键就像您使用的原始文件一样。 – Jeeped