使用多个 Google 表格和 QUERY 函数的外连接

Fri*_*itz 7 google-docs google-sheets

举个例子,假设我在 Google 文档的同一工作簿中有以下工作表:

 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     |
Run Code Online (Sandbox Code Playgroud)

显然,Google Docs 并没有考虑到关系数据库,但我试图获得类似于 SQL 查询的结果

SELECT
  SHEET1.ID,
  SHEET2.*
FROM 
  SHEET1 
    LEFT JOIN
      SHEET2
    ON SHEET1.Lookup = SHEET2.Lookup
Run Code Online (Sandbox Code Playgroud)

得到一个看起来像这样的表

 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
Run Code Online (Sandbox Code Playgroud)

但这就是我目前的立场

 SHEET3            
 \   A    |   B   |   C   |   D   |   E   
1|        |       |       |       |
2|  123   | 4445  | #N/A  |       |
3|  234   | 4445  |       |       |
4|  124   | 1234  |       |       |
5|  767   | 1234  |       |       |
6|  555   | 9887  |       |       |
Run Code Online (Sandbox Code Playgroud)

目前,我已经设法使用该QUERY函数来获取值SHEET1,并尝试了一些不同的QUERY函数,SHEET3!C1试图使用这篇博客文章作为参考来“ LEFT JOIN”这两张表。此时,我使用的两个函数如下。

SHEET3!A2=QUERY(SHEET1!A2:B20, "SELECT A,B")
SHEET3!C2=QUERY(SHEET2!A2:E20, "SELECT B,C,D WHERE A="""&B2&"""")

并将鼠标悬停在错误上,C2读取“查询已完成,输出为空”。我怎样才能加入这些表?

其他参考:
QUERY 的 Google Docs 语法页面

Vik*_*tor 6

在 Sheet3 中执行此操作。

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

={Sheet1!A1:B1,Sheet2!B1:D1}
Run Code Online (Sandbox Code Playgroud)

在单元格 A2 中,要获取连接数据表,请尝试以下公式:

=FILTER({Sheet1!A2:B,
 VLOOKUP(Sheet1!B2:B, {Sheet2!A2:A, Sheet2!B2:D}, {2,3,4}, false)},
 Sheet1!B2:B<>"")
Run Code Online (Sandbox Code Playgroud)

我写了一份关于这个主题的综合指南,名为:

“掌握 Google 表格中的连接公式”


pnu*_*uts 1

如果将 SHEET1 复制到 SHEET3 (A1),然后复制到 C2:

=vlookup($B2,Sheet2!$A:$D,column()-1,0)  
Run Code Online (Sandbox Code Playgroud)

横向和向下复制应该给出添加三个列标签后显示的结果。