You need to enable JavaScript to run this app. 如何在Google Sheets中按指定列分组将行转置为列
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google Sheets中按指定列分组将行转置为列

Google Sheets 长表转宽表实现方法

方法1:数据透视表(无代码,操作简单)

适合不需要频繁调整字段的场景,操作步骤如下:

  • 选中所有原始数据区域(包含表头)
  • 点击顶部菜单栏「数据」→「数据透视表」,选择要存放结果的位置
  • 在右侧透视表配置面板依次设置:
    • 行:添加entity_id字段,取消勾选「显示总计」
    • 列:添加data_key字段,取消勾选「显示总计」
    • 值:添加data_value字段,汇总方式选择「最大值」或「最小值」(每个entity_id和data_key的组合唯一,汇总结果等于原始值)

生成的透视表会自动匹配你需要的结构,原始数据更新后右键透视表选择「刷新」即可同步结果。

方法2:QUERY函数(静态字段,结果可直接编辑)

如果需要转换后的结果是可直接编辑的普通单元格内容,可使用QUERY函数。假设原始数据三列依次为A列(entity_id)、B列(data_key)、C列(data_value),表头在第1行,在目标位置第一个单元格输入以下公式即可:

=QUERY(A:C, "SELECT A, MAX(CASE WHEN B = 'name' THEN C END), MAX(CASE WHEN B = 'author' THEN C END), MAX(CASE WHEN B = 'likes' THEN C END) WHERE A IS NOT NULL GROUP BY A LABEL MAX(CASE WHEN B = 'name' THEN C END) 'name', MAX(CASE WHEN B = 'author' THEN C END) 'author', MAX(CASE WHEN B = 'likes' THEN C END) 'likes'", 1)

公式逻辑说明:通过CASE WHEN将不同data_key对应的值拆分到不同列,按entity_id分组聚合,空值位置自动留空。

方法3:动态自适应公式(自动识别新增字段)

如果后续会新增其他data_key类型,不想每次手动调整配置,可使用以下自动适配公式,自动识别所有唯一的ID和字段生成宽表:

=LET(
  ids, UNIQUE(FILTER(A:A, A:A<>"", ROW(A:A)>1)),
  keys, TRANSPOSE(UNIQUE(FILTER(B:B, B:B<>"", ROW(B:B)>1))),
  header, {"entity_id", keys},
  body, MAKEARRAY(ROWS(ids), ROWS(keys), LAMBDA(r,c, XLOOKUP(1, (A:A=INDEX(ids,r))*(B:B=INDEX(keys,0,c)), C:C, ""))),
  VSTACK(header, body)
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 18:33:02