Google sheets 使用多个Google工作表和查询功能进行外部连接

Google sheets 使用多个Google工作表和查询功能进行外部连接,google-sheets,google-docs,Google Sheets,Google Docs,例如,假设我在谷歌文档的同一工作簿中有以下工作表: SHEET1 | SHEET2 \ A | B | \ A | B | C | D 1| ID |Lookup | 1| Lookup| Name |Flavor | Color 2| 123 | 4445 | 2| 1234 |Whizzer|Cherry | Red 3| 234 | 4445 | 3| 4445 |F

例如,假设我在谷歌文档的同一工作簿中有以下工作表:

 SHEET1            |   SHEET2
 \   A  |  B       |   \   A   |   B   |   C   |   D
1|  ID  |Lookup    |  1| Lookup| Name  |Flavor | Color
2|  123 | 4445     |  2| 1234  |Whizzer|Cherry | Red
3|  234 | 4445     |  3| 4445  |Fizzer |Lemon  | Yellow
4|  124 | 1234     |  4| 9887  |Sizzle |Lime   | Blue
5|  767 | 1234     |
6|  555 | 9887     |
显然,Google文档并没有考虑到关系数据库,但我正在尝试获得类似于SQL查询的结果

SELECT
  SHEET1.ID,
  SHEET2.*
FROM 
  SHEET1 
    LEFT JOIN
      SHEET2
    ON SHEET1.Lookup = SHEET2.Lookup
生成一个如下所示的表

 SHEET3            
 \   A    |   B   |   C   |   D   |   E   
1|   ID   |Lookup | Name  |Flavor | Color
2|  123   | 4445  |Fizzer |Lemon  | Yellow
3|  234   | 4445  |Fizzer |Lemon  | Yellow
4|  124   | 1234  |Whizzer|Cherry | Red
5|  767   | 1234  |Whizzer|Cherry | Red
6|  555   | 9887  |Sizzle |Lime   | Blue
但这就是我目前的立场

 SHEET3            
 \   A    |   B   |   C   |   D   |   E   
1|        |       |       |       |
2|  123   | 4445  | #N/A  |       |
3|  234   | 4445  |       |       |
4|  124   | 1234  |       |       |
5|  767   | 1234  |       |       |
6|  555   | 9887  |       |       |
目前,我已设法使用
QUERY
函数从
SHEET1
中获取值,并在
SHEET3中尝试了一些不同的
QUERY
函数!C1
试图将两张图纸作为参考“
左连接
”。此时,我使用的两个函数如下所示

SHEET3!A2=查询(表1!A2:B20,“选择A,B”)

SHEET3!C2=查询(SHEET2!A2:E20,“选择B、C、D,其中A=”“”&B2&“”)

将鼠标悬停在
C2
中的错误上,显示“查询已完成,输出为空”。我怎样才能把这些床单连接起来

其他参考资料:

如果将表1复制到表3(A1)中,则在C2中:

=vlookup($B2,Sheet2!$A:$D,column()-1,0)  

添加了三个列标签后,跨列和向下复制的结果应显示出来。

以下加载项将提供您所需的一切:,方法是使用内置SQL联接类型和矩阵公式:

=MATRIX(SQLINNERJOIN(Sheet1!A1:B6,2,Sheet2!A1:D4,1, TRUE),,"3")
它将产生以下结果:

我为您创建了一个示例文件:

从属关系:作为谷歌的顶级贡献者,我帮助创建了附加功能表3!A2:

=ARRAYFORMULA(Sheet1!A2:B20)    
第三张!C2:

=ARRAYFORMULA(VLOOKUP(B2:B20,A1:D50,{2,3,4},0))
在表3中执行此操作

在单元格A1中,要获得正确的标题:

={Sheet1!A1:B1,Sheet2!B1:D1}
在单元格A2中,要获取联接数据表,请尝试以下公式:

=FILTER({Sheet1!A2:B,
 VLOOKUP(Sheet1!B2:B, {Sheet2!A2:A, Sheet2!B2:D}, {2,3,4}, false)},
 Sheet1!B2:B<>"")
=过滤器({Sheet1!A2:B,
VLOOKUP(Sheet1!B2:B,{Sheet2!A2:A,Sheet2!B2:D},{2,3,4},false)},
活页1!B2:B“”)
我写了一本关于这个主题的综合指南,名为:


添加了期望的结果。我假设我尝试模拟的SQL代码已经足够了,但不可能太彻底。Mate,如果将Vlookup与Arrayformula或Filter函数和花括号结合起来,那么您可以得到一个只有一个公式(在一个单元格中)的联接数据表。不需要来回复制。尝试用另一对花括号封装Vlookup函数,它可能会工作得更好。。。