我正在尝试使用 INDEX 和 MATCH 实现基本查找。我的布局是:
表 1 姓名 | 网站 | 日期 表 2 姓名 | 网站 | 日期
我希望工作表 1 中的“站点”列自动填充工作表 2 中名称和日期匹配的站点。
我试过的
=INDEX('Sheet2'!B:B,MATCH(A1,'Sheet2'!A:A,0))
这将成功匹配 NAME,但我如何将额外的 MATCH 合并到公式中以匹配NAME和DATE?
我正在尝试使用 INDEX 和 MATCH 实现基本查找。我的布局是:
表 1 姓名 | 网站 | 日期 表 2 姓名 | 网站 | 日期
我希望工作表 1 中的“站点”列自动填充工作表 2 中名称和日期匹配的站点。
我试过的
=INDEX('Sheet2'!B:B,MATCH(A1,'Sheet2'!A:A,0))
这将成功匹配 NAME,但我如何将额外的 MATCH 合并到公式中以匹配NAME和DATE?
您可以像这样使用“数组公式”
=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)
如果有不止一个,后一种方法会给你最后一场比赛......
我建议这类问题的常规解决方案是连接搜索项对(即辅助列)并将连接的对添加到查找数组中。
在上面的示例中,要查找的内容(而不是查找的位置)的串联是“即时”完成的。
这是不使用数组且不使用辅助列的解决方案:
<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>