因此,这回答了如何使用Vlookup函数(但仅在一个单元格中)实现该功能。
在您的示例中,假设每个数据表都有以下单元格引用:
表1:Sheet1!A1:C3
a d g
b e h
c f i
表2:工作表2!A1:C3
c j m
a k n
b l o
这就是公式的构造方式。
连接公式
=ArrayFormula(
{
Sheet1!A1:C,
vlookup(Sheet1!A1:A, {Sheet2!A1:A, Sheet2!B1:C}, {2,3}, false)
}
)
使此公式生效的关键是了解如何在Vlookup范围中使用大括号。您基本上将Range的第一个单元格引用定义为与Vlookup Search_Key匹配的列。范围中其余的单元格引用与您要联接的列有关。
索引写为{2,3}以返回Range的第二和第三列(Range总共3列);大括号与Vlookup索引中的Arrayformula无关,但是从Vlookup函数返回多列是必需的。不写{1,2,3}的原因是因为您不想包括用于连接目的的列。
示例:table2中用于联接的列位于不同的列中(在要联接的数据的右侧)
即使第二个表中的联接列位于该表的第三列,也可以使用这种联接公式。假设此示例中的原始数据如下所示:
表1(表1):
a d g
b e h
c f i
表2(表2):
j m c
k n a
l o b
如果您这样编写公式,仍将获得所需的结果(如连接数据表中所示):
=ArrayFormula(
{
Sheet1!A1:C,
vlookup(Sheet1!A1:A, {Sheet2!C1:C, Sheet2!A1:B}, {2,3}, false)
}
)
联接数据表:
a d g k n
b e h l o
c f i j m
在联接公式中,请注意,Table2的第三列位于Vlookup范围中的第一个单元格引用中!
之所以起作用,是因为当您在Range中使用大括号(与Arrayformula结合使用)时,Vlookup Search_Key不会在原始数据中查找列作为公共分母,而是会在其中使用Array大括号作为参考,以查找一列作为公分母(默认情况下,这是范围的第一列)。
我已经写了一篇有关该主题的综合指南:
index
并且match
将具有相同的复杂性vlookups,但你可以试试这个实现。如果这不起作用,那么我认为需要编写自定义函数。