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

Google Sheets列转行:日期列数据转行式结构技术求助

Google Sheets 多日期列宽表转长表解决方案

针对ClusterID为行、日期(格式Pos. 2024-01-01)为列的宽表,要转换为每行对应ClusterID、Position、Date、数值的长表结构,用以下公式即可批量处理,无需手动处理大量列:

简化版公式(Position固定为Pos.时)

=ARRAYFORMULA(
  QUERY(
    FLATTEN(
      A2:A&"|Pos.|"&REGEXREPLACE(B1:1, "Pos. ", "")&"|"&B2:Z
    ),
    "SELECT Col1, Col2, Col3, Col4 WHERE Col4 IS NOT NULL",
    0
  )
)

通用版公式(Position不固定时)

如果表头里的前缀(如Pos.)有变化,用这个适配不同前缀的版本:

=ARRAYFORMULA(
  LET(
    cluster_range, A2:A,
    header_range, B1:1,
    value_range, B2:Z,
    header_parts, BYCOL(header_range, LAMBDA(col, SPLIT(col, " "))),
    positions, INDEX(header_parts, 1, ),
    dates, INDEX(header_parts, 2, ),
    combined, BYROW(cluster_range, LAMBDA(cluster, 
      BYCOL(SEQUENCE(1, COLUMNS(value_range)), LAMBDA(col_idx, 
        cluster&"|"&INDEX(positions, col_idx)&"|"&INDEX(dates, col_idx)&"|"&INDEX(value_range, ROW(cluster)-ROW(cluster_range)+1, col_idx)
      ))
    )),
    flat_data, FLATTEN(combined),
    split_data, SPLIT(flat_data, "|"),
    QUERY(split_data, "SELECT Col1, Col2, Col3, Col4 WHERE Col4 IS NOT NULL", 0)
  )
)

使用说明

  1. 把公式粘贴到空白单元格(比如新工作表的A1)
  2. 根据实际数据范围调整公式里的区域:
    • A2:A:ClusterID所在列(从第二行数据行开始)
    • B1:1:日期表头所在行
    • B2:Z:数值数据所在区域,若列数更多,把Z改成最后一列的列标(如ZZ)
  3. 公式会自动扁平化所有列数据,拆分出Position和Date,过滤空值后输出长表结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 09:43:18