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

如何用Google Sheets QUERY函数拆分Address2列生成重复行?

解决Google Sheets拆分含Address2记录的方案

Google Sheets的QUERY函数确实不支持JOIN语法,不过可以通过数组组合+过滤的方式实现需求,以下提供两种可行方案:

方案1:适配新版Google Sheets(支持LAMBDA函数)

假设你的数据范围是A1:G(A=状态、B=姓名、C=地址、D=电话、E=邮箱、F=Address2、G=入职日期),在空白单元格输入以下公式:

=QUERY(
  FLATTEN(
    BYROW(A2:G, LAMBDA(row, 
      IF(INDEX(row,6)="", 
        row, 
        {row; INDEX(row,1), INDEX(row,2), INDEX(row,6), INDEX(row,4), INDEX(row,5), "", INDEX(row,7)}
      )
    ))
  , "select Col1,Col2,Col3,Col4,Col5,Col6,Col7 where Col3 is not null", 0)

逻辑说明:

  • BYROW(A2:G, LAMBDA(row, ...)):遍历每一行数据
  • 检查当前行的Address2(第6列)是否为空:
    • 为空则直接保留原行
    • 不为空则生成两行:一行是原数据,另一行将地址列替换为Address2的内容,同时清空Address2列避免重复处理
  • FLATTEN:将生成的嵌套数组展开为一维结构,自动还原成7列的表格
  • QUERY:过滤掉地址列为空的无效行,确保结果干净

方案2:适配旧版Google Sheets(无LAMBDA支持)

如果你的Sheets版本不支持LAMBDA,可使用数组合并的方式:

=QUERY(
  {A2:G; 
   FILTER(A2:B, F2:F<>"")\FILTER(F2:F, F2:F<>"")\FILTER(D2:E, F2:F<>"")\FILTER(G2:G, F2:F<>"")}
  , "select Col1,Col2,Col3,Col4,Col5,Col6,Col7 where Col3 is not null", 0)

逻辑说明:

  • {A2:G; ...}:分号表示垂直合并数组,先保留所有原始行
  • FILTER(A2:B, F2:F<>""):筛选出所有有Address2的记录的状态和姓名列
  • \是Google Sheets中水平合并数组的符号,依次拼接Address2(作为新地址)、电话邮箱、入职日期,同时Address2列留空
  • 最后用QUERY过滤掉空地址行,得到最终结果

内容的提问来源于stack exchange,提问作者Paradise Promotions

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 03:40:22