You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Excel多工作表数据转换:按日期与值分组提取对应姓名

Excel多工作表数据转换:按日期与值分组提取对应姓名

嗨,我来帮你搞定这个Excel数据整理的需求~ 先明确下你的场景:

你有一张原始数据工作表,结构是这样的:

原始数据表

DateAliceBobCharlDan
01/01/24ELEE
02/01/24ELLA

想要转换成另一张工作表,按「日期+对应值」分组,把所有匹配该值的姓名列出来,目标结构是这样:

目标数据表

DateValueName1Name2Name3
01/01/24EAliceCharlDan
01/01/24LBob
02/01/24EAlice
02/01/24LBobCharl
02/01/24ADan

我推荐用Excel的Power Query来处理这个需求,操作简单还能自动更新,比写复杂公式靠谱多了,具体步骤如下:


步骤1:把原始数据导入Power Query

  • 选中原始数据表的任意单元格,点击顶部菜单栏的「数据」选项卡,选择「从表格/区域」。
  • 在弹出的确认窗口里,确保「我的表格有标题」是勾选状态,点击「确定」,进入Power Query编辑器。

步骤2:将姓名列逆透视(把宽表转成窄表)

  • 在Power Query编辑器中,选中「Date」这一列,然后点击「转换」选项卡,选择「逆透视列」→「逆透视其他列」。
  • 这一步完成后,原来的姓名列会变成两列:「属性」(存储姓名)和「值」(存储对应的E/L/A),数据会变成每一行对应一个日期+姓名+值的组合,方便后续分组。

步骤3:按日期和值分组,收集对应姓名

  • 选中「Date」和「值」这两列,点击「转换」选项卡,选择「分组依据」。
  • 在弹出的「分组依据」窗口里:
    1. 选择「高级」模式;
    2. 添加两个分组条件:第一个列名选Date,操作选「分组依据」;第二个列名选Value,操作选「分组依据」;
    3. 点击「添加分组」,设置新列名为姓名列表,操作选「聚合」→「收集」,列选择「属性」;
    4. 点击「确定」,此时每个日期+值的组合都会对应一个包含所有匹配姓名的列表。

步骤4:把姓名列表展开成多列

  • 选中「姓名列表」这一列,点击列标题右侧的展开按钮(两个向外的箭头),选择「展开到新列」。
  • Power Query会自动把列表里的姓名拆分成姓名列表.1姓名列表.2...这样的列,你可以把这些列重命名为Name1Name2Name3等。

步骤5:调整列顺序并导出到新工作表

  • 拖动列标题,把「Date」和「值」列移到最前面,调整成你想要的顺序;
  • 点击Power Query编辑器顶部的「关闭并上载」,选择「关闭并上载至」,指定新工作表的位置,确认后就能得到你需要的目标数据表啦~

如果你的数据后续有更新,只需要右键点击新工作表里的表格,选择「刷新」,就能自动更新结果,非常方便!

备注:内容来源于stack exchange,提问作者user25652804

火山引擎 最新活动