联接 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))