【问题标题】:Join tables in google sheet - full join在 google sheet 中加入表格 - 完全加入
【发布时间】:2020-10-19 19:27:09
【问题描述】:

我在谷歌电子表格中有两个表格。它们有一个共同的唯一标识符(帐户 ID)。现在我需要将这些表连接到第三个表中,其中包含两个表中的所有行。

请看一下这张表:

或点击示例电子表格的链接: https://docs.google.com/spreadsheets/d/17ka2tS5ysXqJnrpCxCTwNmCsTORPFP1Gatq4p1fPldA/edit?usp=sharing

我已经设法使用这个数组公式加入表格:

=ARRAYFORMULA({G3:H8,VLOOKUP(G3:G8,{A3:A7,B3:C7},{2,3},false)})

但是使用这个公式,连接表“错过”了两行:

20  N/A Klaus   Berlin
4   VW  David   Paris

第一个缺失的行仅在表 1 中找到。第二个缺失的 ID 在表 2 中找到,并且在 Table2 中有两 (2) 个匹配的 ID,但在连接表中只有一行

有没有办法提供一个可以处理这个问题的公式?

【问题讨论】:

  • Ludvig,你能澄清一下吗?帐户 ID 1 Anna 拥有两辆汽车,奥迪和菲亚特。帐户 ID 4,David,有两个城市(两个地址?),斯德哥尔摩和巴黎。如果他也有两辆车呢?他会有四张唱片吗?或者哪辆车会去哪个城市?我正在努力为这个连接数据集合中的每条记录找到独特的东西......
  • 是的,这是正确的@kirkg13。如果 David 有两个 cara,我们将需要 4 个记录。也许我的数据需要进一步准备?但我现在看到你想出了一个解决方案。

标签: arrays google-sheets google-sheets-formula array-formulas gs-vlookup


【解决方案1】:

之前的答案不正确。使用:

=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))

【讨论】:

  • 这是一个相当令人印象深刻的公式@player0。太感谢了。我需要调查一下。对于初学者,我不理解返回值为空的 IF 语句,例如 IF(G3:G10, )
  • IF(G3:G10, ) 与使用空列 X3:X10 相同。原因是为了避免ARRAY_LITERAL 错误,这是当大括号{} 中的两个矩阵(范围)大小不同时引起的。错误示例:=INDEX({"a", "x";"y"})
【解决方案2】:

公式

=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,)}} 创建一个数组,该数组包含三列,其值来自表 2,空白表示表 1 中的 ids
  • {A3:C7;{G3:G8,IF(G3:G8,),IF(G3:G8,)}} 创建一个数组,该数组包含三列,其值来自表 1,空白代表表 2 中的 ids
  • 第一个 vlookup 填充前两列(帐户 ID 和汽车)
  • {B3:C7;VLOOKUP(G3:G8,{A3:C7;{G3:G8,IF(G3:G8,),IF(G3:G8,)}},{2,3},FALSE)} 填充第三和第四列(名称和城市)
  • UNIQUE 删除重复项

相关

【讨论】:

  • 这不是省略了几行吗,鲁本?账户 ID = 1 应该有两条记录,分别是 Anna of Stockholm、Audi 和 Fiat 的一条……
  • @kirkg13 已修复。谢谢。
猜你喜欢
  • 1970-01-01
  • 2020-12-12
  • 2011-06-06
  • 1970-01-01
  • 1970-01-01
  • 2013-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多