如何在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
相关产品推荐
相关产品推荐

