You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google Sheets中通过Query语言实现一对多左连接?

嘿,我来帮你解决Google Sheets里左连接两个数据表的问题!结合你的需求,我给你两种实用的实现方案,都是直接用内置公式就能搞定的:

方案一:用ARRAYFORMULA + VLOOKUP实现左连接

这种方法逻辑直观,能完美保留左表(Table1)的所有行,同时匹配右表(Table2)的对应列值,没有匹配项时会显示空内容(你也可以自定义占位符):

  1. 直接选中Result set!A1单元格,粘贴以下公式:
=ARRAYFORMULA({Table1!A1:A4, IFERROR(VLOOKUP(Table1!A1:A4, Table2!A1:B5, 2, FALSE), "")})
  • 简单拆解下逻辑:
    • {Table1!A1:A4, ...}:把Table1的A列和匹配后的结果列组合成一个二维数组,对应输出的A、B列
    • VLOOKUP(...):逐行查找Table1的A列值在Table2的A列中的位置,返回对应行的B列内容
    • IFERROR(..., ""):如果找不到匹配值,就显示空字符串(换成"无匹配"这类文本也可以)
    • ARRAYFORMULA:让公式自动批量处理整个列,不用手动拖拽到每一行

方案二:用QUERY函数实现SQL风格左连接

如果你更熟悉SQL语法,用QUERY函数也能实现,本质是先构建包含双表数据的虚拟数组,再执行筛选逻辑:

  1. 同样在Result set!A1单元格输入:
=QUERY(
  {Table1!A1:A4, IFERROR(VLOOKUP(Table1!A1:A4, Table2!A1:B5, 2, FALSE), "")},
  "SELECT * WHERE Col1 IS NOT NULL",
  0
)
  • 说明:
    • 第一部分和方案一的数组逻辑一致,先组合左表列与匹配结果
    • "SELECT * WHERE Col1 IS NOT NULL":过滤掉Table1中可能存在的空行(如果你的表没有空行,这部分也可以简化)
    • 最后一个参数0表示数据不带表头,如果你的Table1/Table2第一行是表头,把0改成1即可

注意事项

  • 确保Table1的A列和Table2的A列是相同数据类型(比如都是文本或数字),否则可能出现匹配失败的情况
  • 你的输出范围'Result set'!A1:B6足够容纳结果,因为Table1最多4行,加上表头的话最多5行,完全在6行范围内

内容的提问来源于stack exchange,提问作者Jonathan Livingston Seagull

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:15:28