我正在尝试使用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?
答案 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)
我建议这类问题的传统解决方案是连接一对搜索项(即辅助列)并将连接对添加到查找数组中。
在上面的示例中,查找内容(而不是在哪里查找)的连接是“即时”完成的。
答案 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>