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

Google Sheets多维度QUERY/FILTER结果合并带空行的单公式实现

解决方案

首先给出你的原始数据表格:

一二三
ac41
ac47
ac23
ad9
ad15
ad75
ae56
bf4
bf22
bf76
bg58
bg68
bg54
bh32

针对你需要合并不同列数的QUERY/FILTER结果、中间保留两行空白的需求,可以用LET+REDUCE组合实现,无需脚本,单个单元格公式即可完成:

=LET(
  // 定义各个公式的结果
  res1, QUERY(A:C, "SELECT A, SUM(C) WHERE A IS NOT NULL GROUP BY A"),
  res2, QUERY(A:C, "SELECT A, B, SUM(C) WHERE A IS NOT NULL GROUP BY A, B"),
  res3, {A1:C1; FILTER(A:C, A:A = "a")},
  res4, QUERY(A:C, "SELECT SUM(C) WHERE A IS NOT NULL"),
  // 计算所有结果的最大列数,统一对齐列数
  max_cols, MAX(COLUMNS(res1), COLUMNS(res2), COLUMNS(res3), COLUMNS(res4)),
  // 创建2行max_cols列的空白行数组
  blank_rows, MAKEARRAY(2, max_cols, LAMBDA(r,c, "")),
  // 逐个合并结果,中间插入空白行
  final_result, REDUCE("", {res1, res2, res3, res4}, LAMBDA(acc, curr,
    IF(acc="",
      // 第一个结果直接扩展到max_cols列
      HSTACK(curr, IFERROR(SEQUENCE(1, max_cols - COLUMNS(curr)), "")),
      // 后续结果先加空白行,再加扩展列后的当前结果
      VSTACK(acc, blank_rows, HSTACK(curr, IFERROR(SEQUENCE(1, max_cols - COLUMNS(curr)), "")))
    )
  )),
  final_result
)

关键逻辑说明:

  • 统一列数:用MAX(COLUMNS(...))拿到所有结果里的最大列数,再通过HSTACK给列数少的结果补空列,确保所有数组维度兼容
  • 插入空白行:用MAKEARRAY生成指定列数的空白行,每次合并非第一个结果前先插入这两行
  • REDUCE遍历合并:通过REDUCE逐个拼接结果,避免直接用;/VSTACK因维度不匹配报错

如果后续要添加更多公式,只需要:

  1. 新增resN变量存储新公式结果
  2. 在max_cols的MAX参数里加入COLUMNS(resN)
  3. 在REDUCE的遍历数组{res1, res2, res3, res4}里加入resN即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 16:23:21