【问题标题】:Multiple VLOOKUP or INDEX MATCH多个 VLOOKUP 或 INDEX MATCH
【发布时间】:2016-02-07 14:03:28
【问题描述】:

我正在尝试使用 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))),"")

这会根据对“是”条件的回答从我的数据列表中返回一个人的姓名。

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

【问题讨论】:

    标签: excel indexing excel-formula match vlookup


    【解决方案1】:

    如果您了解它们要做什么,这些增量和行号会变得不必要地复杂。

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

    此外,当您使用带有选项 615 子功能 (SMALL)(忽略错误)时,AGGREGATE¹ function 可以快速处理条件。通过将任何不匹配的内容转换为 #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 引入的。它在早期版本中不可用。

    【讨论】:

    • 这太棒了!非常感谢您对此的帮助。它已经占用了太多的时间,现在感觉就像我之前应该问的那样浪费了。
    • 很高兴能成功。请记住,这些是标准公式,而不是数组公式。它们不需要 Ctrl+Shift+Enter 就像您使用的原始版本一样。
    • @AlexMoore 您可以通过“接受”来完成该步骤 - 像this 这样的答案。它将从“未回答”列表中删除此问题。 ( :
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    • 2018-06-29
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多