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

Google Sheets技术求助:如何将每组4列合并制作工资单清单

解决方案

要实现从多组列中提取4列并堆叠成工资单核对清单,同时过滤掉姓名为空的行,可参考以下两种方法:

方法1:数组堆叠 + QUERY过滤(推荐)

直接将每组需要的4列区域按行堆叠,再用QUERY函数筛选非空姓名行:

=QUERY({C5:F28;K5:N28;S5:V28;AA5:AD28;AI5:AL28}, "where Col1 is not null", 0)
  • 大括号{}内用分号;分隔不同区域,实现行方向的堆叠,需确保每个区域都是4列,堆叠后可保持4列结构
  • where Col1 is not null用于过滤掉姓名列(每组的第一列)为空的行
  • 末尾的0表示原区域无需保留表头

如果你的每组4列不是前4列,只需调整括号内的区域即可,比如要提取每组的第1、3、4、6列,可写成:

=QUERY({C5:C28,E5:F28,H5:H28;K5:K28,M5:N28,P5:P28;S5:S28,U5:V28,X5:X28;AA5:AA28,AC5:AD28,AF5:AF28;AI5:AI28,AK5:AL28,AN5:AN28}, "where Col1 is not null", 0)

方法2:处理FLATTEN的结果(适用于复杂列提取)

如果必须基于FLATTEN的结果恢复4列结构,可结合INDEX和SEQUENCE函数:

=ARRAYFORMULA(INDEX(FLATTEN(C5:F28;K5:N28;S5:V28;AA5:AD28;AI5:AL28), SEQUENCE(ROWS(C5:F28)*5,4)))

再嵌套FILTER过滤非空行:

=FILTER(ARRAYFORMULA(INDEX(FLATTEN(C5:F28;K5:N28;S5:V28;AA5:AD28;AI5:AL28), SEQUENCE(ROWS(C5:F28)*5,4))), INDEX(ARRAYFORMULA(INDEX(FLATTEN(C5:F28;K5:N28;S5:V28;AA5:AD28;AI5:AL28), SEQUENCE(ROWS(C5:F28)*5,4))),,1)<>"")

这种方法先通过FLATTEN把所有数据转成单列,再用INDEX和SEQUENCE将其重新组织成4列表格,最后用FILTER去掉姓名为空的行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 15:40:05