【问题标题】:Lookup using INDEX and MATCH with two criteria使用带有两个条件的 INDEX 和 MATCH 进行查找
【发布时间】:2013-09-12 14:45:30
【问题描述】:

我正在尝试使用 INDEX 和 MATCH 实现基本查找。我的布局是:

表 1 姓名 |网站 |日期 表 2 姓名 |网站 |日期

我希望工作表 1 中的“站点”列自动填充工作表 2 中名称和日期匹配的站点。

我的尝试

=INDEX('Sheet2'!B:B,MATCH(A1,'Sheet2'!A:A,0))

这将成功匹配 NAME,但我如何将额外的 MATCH 合并到公式中以匹配 NAME DATE?

【问题讨论】:

  • 将名称和日期连接在一起(到帮助列或类似的东西中)。然后你可以在帮助列上使用 vlookup 或 index/match 或任何你想要的东西来确保名称和日期都匹配。

标签: excel excel-formula excel-2010 lookup excel-match


【解决方案1】:

你可以像这样使用“数组公式”

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

CTRL+SHIFT+ENTER

....或者您可以添加另一个 INDEX 函数,这样就不需要“输入数组”,即

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

或者另一种方式是像这样使用 LOOKUP

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

如果有多个匹配项,后一种方法将为您提供 last 匹配项......

【讨论】:

  • 这似乎是一个正确的解决方案,但在为此奋斗了几个小时后,我终于放弃了(excel一直崩溃,可能是因为它需要索引的行数?)。跨度>
【解决方案2】:

我建议这类问题的常规解决方案是将搜索词对(即辅助列)连接起来,并将连接后的对添加到查找数组中。

在上面的示例中,要查找的内容(而不是查找位置)的串联是“即时”完成的。

【讨论】:

  • 在与@barry houdini 的解决方案抗争之后,我终于放弃了,并按照您的建议使用了帮助列。
【解决方案3】:

这是不使用数组且不使用辅助列的解决方案:

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

这是一个执行网格查找的更高级的解决方案:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多