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

Google Sheets中WIDE DATA转TALL DATA的适配公式求解

解决Google Sheets宽表到高表的对应表头数据映射问题

要实现WIDE DATA每行中对应表头的非空数据匹配到TALL DATA的G-O列,核心是按表头文本匹配提取,而非单纯按位置转置。以下是两种实用方案:

方案1:提取第一个非空的对应字段值

适合每行中同一表头仅存在一个非空值的场景,在TALL DATA的G2单元格输入以下数组公式(会自动填充整列及横向O列):

=ARRAYFORMULA(
  BYROW('WIDE DATA'!S2:DM, LAMBDA(row_data,
    BYCOL(G1:O1, LAMBDA(target_header,
      IFERROR(INDEX(FILTER(row_data, 'WIDE DATA'!S1:DM=target_header), 1), "")
    ))
  ))
)

公式说明:

  • BYROW('WIDE DATA'!S2:DM, LAMBDA(row_data, ...)):遍历WIDE DATA中S列到DM列的每一行数据
  • BYCOL(G1:O1, LAMBDA(target_header, ...)):遍历TALL DATA中G1到O1的每个目标表头
  • FILTER(row_data, 'WIDE DATA'!S1:DM=target_header):筛选当前行中与目标表头完全匹配的单元格
  • INDEX(...,1):取筛选结果中的第一个非空值,IFERROR处理无匹配值的情况,返回空字符串

方案2:合并所有非空的对应字段值

如果同一表头在一行中有多个非空值,需要合并展示,使用以下公式:

=ARRAYFORMULA(
  BYROW('WIDE DATA'!S2:DM, LAMBDA(row_data,
    BYCOL(G1:O1, LAMBDA(target_header,
      TEXTJOIN("; ", TRUE, FILTER(row_data, 'WIDE DATA'!S1:DM=target_header))
    ))
  ))
)

公式说明:

  • TEXTJOIN("; ", TRUE, ...):将筛选出的所有非空值用分号+空格分隔合并,TRUE参数自动忽略空值

内容的提问来源于stack exchange,提问作者David J. Myers

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 15:43:08