联接 google sheet 中的表 - 完全联接
Join tables in google sheet - full join
我在 google 传播 sheet 中有两个 table。他们有一个共同的唯一标识符(帐户 ID)。现在我需要将这些 table 加入第三个 table 中,其中包含来自两个 table 的所有行。
请看这个sheet:
或按照 link 示例传播sheet:
https://docs.google.com/spreadsheets/d/17ka2tS5ysXqJnrpCxCTwNmCsTORPFP1Gatq4p1fPldA/edit?usp=sharing
我已经使用这个数组公式成功地加入了 tables:
=ARRAYFORMULA({G3:H8,VLOOKUP(G3:G8,{A3:A7,B3:C7},{2,3},false)})
但是使用这个公式,加入的 table “遗漏”了两行:
20 N/A Klaus Berlin
4 VW David Paris
第一个缺失的行仅在 Table 1 中找到。第二个缺失的 ID 在 Table 2 中找到并且在 Table 中有两 (2) 个匹配的 ID 2、但在joined中只有一行table
有没有办法提供可以处理此问题的公式?
公式
=ArrayFormula(UNIQUE({
VLOOKUP({A3:A7;G3:G8},{G3:H8;{A3:A7,IF(A3:A7,)}},{1,2},FALSE),
{B3:C7;VLOOKUP(G3:G8,{A3:C7;{G3:G8,IF(G3:G8,),IF(G3:G8,)}},{2,3},FALSE)}
}))
结果
说明
{A3:A7;G3:G8}
创建所有帐户 ID 的列表(包括重复项)
{G3:H8;{A3:A7,IF(A3:A7,)}}
创建一个包含三列的数组,其中的值来自 Table 2,ID 的空白来自 Table 1
{A3:C7;{G3:G8,IF(G3:G8,),IF(G3:G8,)}}
创建一个包含三列的数组,其中的值来自 Table 1,ID 的空白来自 Table 2
- 第一个
vlookup
填充前两列(帐户 ID 和汽车)
{B3:C7;VLOOKUP(G3:G8,{A3:C7;{G3:G8,IF(G3:G8,),IF(G3:G8,)}},{2,3},FALSE)}
填充第三和第四列(名称和城市)
UNIQUE
删除重复项
相关
- Google spreadsheet "=QUERY" join() equivalent function?
之前的回答不正确。使用:
=ARRAYFORMULA(QUERY(UNIQUE(IFNA({G2:H10,
VLOOKUP(G2:G10, A2:C10, {2, 3}, 0);
VLOOKUP({A3:A10; G3:G10}, {G3:H10; {A3:A10, IF(A3:A10, )}}, {1, 2}, 0), {B3:C10;
VLOOKUP(G3:G10, {A3:C10; {G3:G10, IF(G3:G10, ), IF(G3:G10, )}}, {2, 3}, 0)}})),
"where Col1 is not null order by Col1", 1))
我在 google 传播 sheet 中有两个 table。他们有一个共同的唯一标识符(帐户 ID)。现在我需要将这些 table 加入第三个 table 中,其中包含来自两个 table 的所有行。
请看这个sheet:
或按照 link 示例传播sheet: https://docs.google.com/spreadsheets/d/17ka2tS5ysXqJnrpCxCTwNmCsTORPFP1Gatq4p1fPldA/edit?usp=sharing
我已经使用这个数组公式成功地加入了 tables:
=ARRAYFORMULA({G3:H8,VLOOKUP(G3:G8,{A3:A7,B3:C7},{2,3},false)})
但是使用这个公式,加入的 table “遗漏”了两行:
20 N/A Klaus Berlin
4 VW David Paris
第一个缺失的行仅在 Table 1 中找到。第二个缺失的 ID 在 Table 2 中找到并且在 Table 中有两 (2) 个匹配的 ID 2、但在joined中只有一行table
有没有办法提供可以处理此问题的公式?
公式
=ArrayFormula(UNIQUE({
VLOOKUP({A3:A7;G3:G8},{G3:H8;{A3:A7,IF(A3:A7,)}},{1,2},FALSE),
{B3:C7;VLOOKUP(G3:G8,{A3:C7;{G3:G8,IF(G3:G8,),IF(G3:G8,)}},{2,3},FALSE)}
}))
结果
说明
{A3:A7;G3:G8}
创建所有帐户 ID 的列表(包括重复项){G3:H8;{A3:A7,IF(A3:A7,)}}
创建一个包含三列的数组,其中的值来自 Table 2,ID 的空白来自 Table 1{A3:C7;{G3:G8,IF(G3:G8,),IF(G3:G8,)}}
创建一个包含三列的数组,其中的值来自 Table 1,ID 的空白来自 Table 2- 第一个
vlookup
填充前两列(帐户 ID 和汽车) {B3:C7;VLOOKUP(G3:G8,{A3:C7;{G3:G8,IF(G3:G8,),IF(G3:G8,)}},{2,3},FALSE)}
填充第三和第四列(名称和城市)UNIQUE
删除重复项
相关
- Google spreadsheet "=QUERY" join() equivalent function?
之前的回答不正确。使用:
=ARRAYFORMULA(QUERY(UNIQUE(IFNA({G2:H10,
VLOOKUP(G2:G10, A2:C10, {2, 3}, 0);
VLOOKUP({A3:A10; G3:G10}, {G3:H10; {A3:A10, IF(A3:A10, )}}, {1, 2}, 0), {B3:C10;
VLOOKUP(G3:G10, {A3:C10; {G3:G10, IF(G3:G10, ), IF(G3:G10, )}}, {2, 3}, 0)}})),
"where Col1 is not null order by Col1", 1))