使用INDEX和MATCH查找两个标准

时间:2013-09-12 14:45:30

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

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

Sheet 1
NAME | SITE | DATE

Sheet 2
NAME | SITE | DATE

我希望工作表1中的“站点”列自动填充表2中与SAME和DATE匹配的SITE。

我尝试过什么

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

这将成功匹配NAME,但如何在公式中加入额外的MATCH以匹配 NAME DATE?

3 个答案:

答案 0 :(得分:12)

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

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

CTRL + SHIFT + 输入

....或者你可以添加另一个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)

如果有多个......后面的方法会给你最后匹配......

答案 1 :(得分:4)

我建议这类问题的传统解决方案是连接一对搜索项(即辅助列)并将连接对添加到查找数组中。

SO18767439 example

在上面的示例中,查找内容(而不是在哪里查找)的连接是“即时”完成的。

答案 2 :(得分:0)

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

<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>