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

如何更简洁地合并Google Sheets中的多列数据?

问题需求

需要将电子表格中多列独立列表合并为单列并剔除空值,方便后续使用VLOOKUP、FILTER等函数。当前使用的QUERY公式能实现需求,但过于冗长,且新增列时需手动修改公式,希望获得更简洁且自动适配新增列的方案。原公式如下:

=QUERY({Decklists!B8:B;Decklists!C8:C;Decklists!D8:D;Decklists!E8:E;Decklists!F8:F;Decklists!G8:G;Decklists!H8:H;Decklists!I8:I;Decklists!J8:J;Decklists!K8:K;Decklists!L8:L;Decklists!M8:M;Decklists!N8:N;Decklists!O8:O;Decklists!P8:P;Decklists!Q8:Q;Decklists!R8:R;Decklists!S8:S;Decklists!T8:T;Decklists!U8:U;Decklists!V8:V;Decklists!W8:W;Decklists!X8:X;Decklists!Y8:Y;Decklists!Z8:Z;Decklists!AA8:AA;Decklists!AB8:AB;Decklists!AC8:AC;Decklists!AD8:AD}, "select Col1 where Col1 <>''", 0)
简洁适配方案

方案1:使用TOCOL函数(推荐,Google Sheets 2022及以上版本支持)

TOCOL函数可直接将指定多列范围转换为单列,同时自动忽略空单元格,语法简洁:

=TOCOL(Decklists!B8:AD, 1)
  • 说明:Decklists!B8:AD是需要合并的目标列范围;参数1表示忽略空值。若后续新增列,只需扩展范围(例如新增到AE列时改为Decklists!B8:AE);如果需要完全自动适配所有有数据的列,可结合动态范围函数进一步优化。

方案2:动态范围+QUERY兼容方案

如果需要兼容旧版Google Sheets,可通过动态范围自动识别所有有数据的列,再合并去空:

=QUERY(FLATTEN(INDIRECT("Decklists!B8:"&ADDRESS(ROWS(Decklists!B:B), COUNTA(Decklists!B1:1), 4))), "where Col1 is not null", 0)
  • 原理:COUNTA(Decklists!B1:1)统计表头行(B1开始)的非空列数,ADDRESS生成最后一列的单元格地址,INDIRECT动态引用整个目标范围,FLATTEN将多列转为单列,最后用QUERY过滤空值。新增列后只要表头行有内容,公式会自动适配,无需手动修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 07:36:17