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

Google Sheets全连接问题:求可包含两表所有行的连接公式

解决Google Sheets两表合并(全外连接+保留重复行)问题

你的问题出在原公式的两个核心局限上:

  1. 单向匹配导致表1独有的行丢失:你是从表2的ID范围出发去查询表1数据,所以表1中那些没出现在表2里的ID(比如20)自然不会被包含进结果。
  2. VLOOKUP的单匹配特性:虽然表2里有两行ID=4,但VLOOKUP本身只会返回第一个匹配结果——不过更关键的是,要同时保留两表的所有行(包括独有的行和重复ID行),单向匹配的思路就不适用。

下面给你两种可行的解决方案:

方案1:用QUERY实现全外连接(自动补全缺失列)

这个公式会把两个表的所有行都整合进来,对于只在一个表中存在的行,另一表的列会自动填充N/A,同时保留所有重复行:

=ARRAYFORMULA(QUERY(
  {
    --A3:A7, B3:C7, IFERROR(VLOOKUP(A3:A7, G3:H8, 2, FALSE), "N/A");
    --G3:G8, IFERROR(VLOOKUP(G3:G8, A3:C7, {2,3}, FALSE), {"N/A", "N/A"}), H3:H8
  },
  "SELECT Col1, Col4, Col2, Col3 WHERE Col1 IS NOT NULL ORDER BY Col1",
  0
))

细节说明:

  • --A3:A7和--G3:G8是把ID转为数字类型,避免文本/数字ID的匹配误差
  • 第一部分是表1的所有行,补充匹配表2的Car列(无匹配则显示N/A)
  • 第二部分是表2的所有行,补充匹配表1的Name和City列(无匹配则显示N/A)
  • QUERY语句重新排列了列顺序为Account id → Car → Name → City,并按ID排序(不需要排序可以去掉ORDER BY Col1)

方案2:用数组组合+可选去重(更灵活)

如果需要自由控制是否去重,或者更直观的数组拼接,可以用这个公式:

=ARRAYFORMULA({
  // 表1行 + 匹配的表2Car列
  A3:C7, IFERROR(VLOOKUP(A3:A7, G3:H8, 2, FALSE), "N/A");
  // 表2行 + 匹配的表1Name/City列
  G3:G8, IFERROR(VLOOKUP(G3:G8, A3:C7, {2,3}, FALSE), {"N/A", "N/A"}), H3:H8
})

可选调整:

  • 如果需要去掉完全重复的行(比如两表中完全一致的行),可以在外层套上UNIQUE函数:
    =ARRAYFORMULA(UNIQUE({
      A3:C7, IFERROR(VLOOKUP(A3:A7, G3:H8, 2, FALSE), "N/A");
      G3:G8, IFERROR(VLOOKUP(G3:G8, A3:C7, {2,3}, FALSE), {"N/A", "N/A"}), H3:H8
    }))
    

这两个方案都会解决你遇到的问题:

  • 表1独有的20 N/A Klaus Berlin行会被包含进来
  • 表2里的两行4 BMW David London和4 VW David Paris都会完整显示

内容的提问来源于stack exchange,提问作者Ludvig Hansson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 09:27:29