Google Sheets公式/查询:重复列标题实现宽表转长表
解决Google Sheets宽表转长表并关联问题标题的问题
你的核心需求是把宽表格式的表单数据拆分为每行对应单个问题的长表,同时保留Timestamp、Name并将列标题作为Question值重复显示。现有公式的问题在于没有将每个问题组的列标题与对应行数据绑定,以下是修正后的解决方案:
修正后的公式
=SORT(QUERY({ 'Form Responses'!A2:B, 'Form Responses'!F1:F1, 'Form Responses'!G2:G, 'Form Responses'!H2:H; 'Form Responses'!A2:B, 'Form Responses'!I1:I1, 'Form Responses'!J2:J, 'Form Responses'!K2:K; 'Form Responses'!A2:B, 'Form Responses'!L1:L1, 'Form Responses'!M2:M, 'Form Responses'!N2:N; 'Form Responses'!A2:B, 'Form Responses'!O1:O1, 'Form Responses'!P2:P, 'Form Responses'!Q2:Q }, "select * where Col3 is not null", 0))
公式说明
- 每个分号分隔的区块对应一个问题组:
'Form Responses'!A2:B:提取每条记录的Timestamp和Name(从第2行开始,跳过表头行)'Form Responses'!F1:F1:提取第一个问题的列标题作为Question列的值,Google Sheets会自动将这个单一值重复填充到该组的所有行'Form Responses'!G2:G和'Form Responses'!H2:H:对应该问题的Response和Score数据
QUERY函数中的where Col3 is not null:过滤掉没有问题内容的空行(避免无回答的无效记录)SORT函数:保持记录的排序逻辑(默认按Timestamp顺序)
扩展说明
如果后续表单新增了问题组(比如R:T),只需在数组中新增一行对应的区块即可,格式与现有组一致:
;'Form Responses'!A2:B, 'Form Responses'!R1:R1, 'Form Responses'!S2:S, 'Form Responses'!T2:T
内容的提问来源于stack exchange,提问作者user23414048
相关产品推荐
相关产品推荐

