Excel Power Query:合并值并实现重复问卷作答的表结构转换
嘿,我来帮你搞定这个Power Query的转化问题!这种把「每道问题一条记录」的长表转成「每次作答一行」的宽表需求很常见,我给你一步步拆解具体操作:
具体操作步骤
1. 把原始数据导入Power Query
- 打开你的Excel文件,选中所有原始问卷数据(如果还不是表格,系统会提示你转成表格,直接确认就行)
- 点击顶部「数据」选项卡 → 选择「从表格/区域」,进入Power Query编辑器界面
2. 给两次作答添加区分标识(这步是关键!)
因为你的数据是同一个用户两次问卷的所有问题记录,首先得把哪条记录属于第一次、哪条属于第二次区分开,分两种场景处理:
场景A:原始数据有区分字段(比如「提交时间」「作答批次」)
- 先按区分字段排序:选中该字段(比如「提交时间」),点击「开始」选项卡的「排序升序/降序」,确保两次作答的记录是连续分组的
- 添加索引列:点击「添加列」→ 「索引列」→ 「从1开始」,给每条记录编上序号
- 计算作答次数:假设你的问卷一共有
N道题(比如10题),添加自定义列,输入公式(把N换成你实际的问题数量):
把这个新列命名为「作答次数」,这样第一次作答的所有记录会标记为= Number.RoundUp([索引]/N)1,第二次为2
场景B:原始数据没有区分字段,但两次作答的问题顺序完全一致
- 直接添加索引列(从1开始),然后用上面同样的公式计算「作答次数」就行——只要你确认两次问卷的问题数量完全相同,这个方法就靠谱
3. 把长表转成宽表(透视列)
- 选中「作答次数」列(如果原始数据有用户名,也一起选中)
- 点击顶部「转换」选项卡 → 选择「透视列」
- 在弹出的设置窗口里:
- 「值列」选择你的「答案」列(就是用户填写的内容所在的列)
- 「列名」选择你的「问题」列(就是问卷题目所在的列)
- 一定要勾选「不要聚合」(因为每个「作答次数+问题」的组合只会有一个答案,不需要聚合计算)
- 点击「确定」,这时你就能看到每行对应一次作答,列就是各个问卷问题,单元格里是对应答案啦
4. 调整第一列(重复显示用户名)
- 如果原始数据里没有单独的用户名列,现在可以添加一个自定义列,输入你的用户名即可:
= "你的用户名" - 把这个列拖拽到最左边,就完成了第一列重复显示用户名的要求
5. 把处理好的数据加载回Excel
- 点击Power Query编辑器顶部「开始」选项卡 → 「关闭并上载」,选择加载到新工作表,就能得到你想要的目标表格了
内容的提问来源于stack exchange,提问作者Sjoerd
相关产品推荐
相关产品推荐

