Excel多工作表数据转换:按日期与值分组提取对应姓名
Excel多工作表数据转换:按日期与值分组提取对应姓名
嗨,我来帮你搞定这个Excel数据整理的需求~ 先明确下你的场景:
你有一张原始数据工作表,结构是这样的:
原始数据表
| Date | Alice | Bob | Charl | Dan |
|---|---|---|---|---|
| 01/01/24 | E | L | E | E |
| 02/01/24 | E | L | L | A |
想要转换成另一张工作表,按「日期+对应值」分组,把所有匹配该值的姓名列出来,目标结构是这样:
目标数据表
| Date | Value | Name1 | Name2 | Name3 |
|---|---|---|---|---|
| 01/01/24 | E | Alice | Charl | Dan |
| 01/01/24 | L | Bob | ||
| 02/01/24 | E | Alice | ||
| 02/01/24 | L | Bob | Charl | |
| 02/01/24 | A | Dan |
我推荐用Excel的Power Query来处理这个需求,操作简单还能自动更新,比写复杂公式靠谱多了,具体步骤如下:
步骤1:把原始数据导入Power Query
- 选中原始数据表的任意单元格,点击顶部菜单栏的「数据」选项卡,选择「从表格/区域」。
- 在弹出的确认窗口里,确保「我的表格有标题」是勾选状态,点击「确定」,进入Power Query编辑器。
步骤2:将姓名列逆透视(把宽表转成窄表)
- 在Power Query编辑器中,选中「Date」这一列,然后点击「转换」选项卡,选择「逆透视列」→「逆透视其他列」。
- 这一步完成后,原来的姓名列会变成两列:「属性」(存储姓名)和「值」(存储对应的E/L/A),数据会变成每一行对应一个日期+姓名+值的组合,方便后续分组。
步骤3:按日期和值分组,收集对应姓名
- 选中「Date」和「值」这两列,点击「转换」选项卡,选择「分组依据」。
- 在弹出的「分组依据」窗口里:
- 选择「高级」模式;
- 添加两个分组条件:第一个列名选
Date,操作选「分组依据」;第二个列名选Value,操作选「分组依据」; - 点击「添加分组」,设置新列名为
姓名列表,操作选「聚合」→「收集」,列选择「属性」; - 点击「确定」,此时每个日期+值的组合都会对应一个包含所有匹配姓名的列表。
步骤4:把姓名列表展开成多列
- 选中「姓名列表」这一列,点击列标题右侧的展开按钮(两个向外的箭头),选择「展开到新列」。
- Power Query会自动把列表里的姓名拆分成
姓名列表.1、姓名列表.2...这样的列,你可以把这些列重命名为Name1、Name2、Name3等。
步骤5:调整列顺序并导出到新工作表
- 拖动列标题,把「Date」和「值」列移到最前面,调整成你想要的顺序;
- 点击Power Query编辑器顶部的「关闭并上载」,选择「关闭并上载至」,指定新工作表的位置,确认后就能得到你需要的目标数据表啦~
如果你的数据后续有更新,只需要右键点击新工作表里的表格,选择「刷新」,就能自动更新结果,非常方便!
备注:内容来源于stack exchange,提问作者user25652804




