外部加入使用多个Google表格和QUERY功能

时间:2015-09-02 19:08:37

标签: google-sheets google-docs

例如,假设我在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     |

显然,Google Docs并不是考虑到关系数据库,但我试图获得类似于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获取值,并在QUERY尝试了一些不同的SHEET3!C1函数" LEFT JOIN"使用this blog post作为参考的两张纸。此时,我使用的两个功能如下:

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

并将鼠标悬停在C2中的错误读取"使用空输出"完成查询。我如何加入这些表?

其他参考文献:
Google Docs syntax page for QUERY

4 个答案:

答案 0 :(得分:1)

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

=vlookup($B2,Sheet2!$A:$D,column()-1,0)  
一旦添加了三个列标签,

横向和向下复制应该会显示您显示的结果。

答案 1 :(得分:0)

以下加载项将提供您所需的一切: Formulas by Top Contributors ,同时使用内置SQL连接类型和MATRIX公式:

=MATRIX(SQLINNERJOIN(Sheet1!A1:B6,2,Sheet2!A1:D4,1, TRUE),,"3")

它将产生以下结果:
enter image description here

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

Affiliation:作为谷歌杰出贡献者,我帮助创建了附加组件

答案 2 :(得分:0)

Sheet3!A2:

=ARRAYFORMULA(Sheet1!A2:B20)    

Sheet3!C2:

=ARRAYFORMULA(VLOOKUP(B2:B20,A1:D50,{2,3,4},0))

答案 3 :(得分:0)

在Sheet3中执行此操作。

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

={Sheet1!A1:B1,Sheet2!B1:D1}

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

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

我已经写了一篇有关该主题的综合指南:

'Mastering Join-formulas in Google Sheets'