乐于分享
好东西不私藏

Power Query 案例 47:Excel里最让人头疼的堆叠报表,竟然用这几行代码就轻松解决了?

Power Query 案例 47:Excel里最让人头疼的堆叠报表,竟然用这几行代码就轻松解决了?

日常工作中,你一定遇到过这种 “一坨式” 报表: 

院校、专业、人事、报表、导出数据…… 

明明是一体信息,却硬生生上下堆在一起, 不能筛选、不能汇总、不能透视,完全没法直接分析

这种格式看着头疼,手动处理又很麻烦。 

今天我们用Power Query (PQ),通过一个通用的清洗模板,一键将这种“非规范”的纵向数据,整理成标准的二维表!

需求

表格中记录了不同院校不同专业的志愿计划数,一个学校对应 N 个专业,总共数据有2000多条,院校的基本信息和专业信息都是纵向堆叠在一起。

需求是:

将院校的基本信息和专业信息横向拼在一起,整理成规范的二维表。 

效果如下:

核心思路

我们要把这种**“纵向堆叠”变成“横向展开”**,核心思路只有5步:

  1. 按 “院校代号” 做局部分组,把每个学校切成独立子表
  2. 每个子表里:第一行是院校信息,下面是专业
  3. 用 List.TransformMany 做拼接:1 行院校 × N 行专业
  4. 封装函数,批量处理所有学校
  5. 合并所有子表,得到最终规范表

处理步骤

  1. 将数据导入PQ,注意不要勾选“表包含标题”

  2. 将数据分组。 

    不同的院校的数据,都是从院校代号开始,利用这个规律,用Table.Group对【列1】进行局部分组

  3. 先随便拿一组数据,并提升下标题,先看下单组数据如何处理。

  1. 将子表数据转为List 
    先观察数据规律,确定处理思路是:把第一行数据,和后面每一行的专业数据,拼在一起,最后转表就行。
  1. 数据拼接 

    List.TransformMany,对院校信息(第一行数据)和专业信息(第三行开始所有数据)进行笛卡尔积,将它们拼在一起。

  2. 转为表格,完成单个表格处理。

第二参数是构建了一个动态标题

  1. 把单个表的处理,封装成自定义函数fx

  2. 回到主查询,调用自定义函数,完成批量处理。 

    如果不想用自定义函数,把上面单个表的过程,用record的形式直接写在这里也可以。不过自定义函数会让代码看起来更清晰。

  3. 将子表深化出来,再合并在一起,就完成了数据的处理

最终代码

let    源 = Excel.CurrentWorkbook(){[Name="表3"]}[Content],    自定义1 = Table.Group( 源,"列1",{"a",each fx(_)},0,(x,y)=>Number.From( y="院校代号")),    自定义2 = Table.Combine( 自定义1[a])in    自定义2//自定义函数fx,复制下面代码,粘贴到高级编辑器,并改个名字:fx(t as table)=>let       a1 = t,    提升的标题 = Table.PromoteHeaders(a1, [PromoteAllScalars=true]),    lst = Table.ToList( 提升的标题,each _),    自定义2 = List.TransformMany( {lst{0}},each List.Skip( lst,2),(x,y)=>x&y),    name = Table.ColumnNames(提升的标题)& lst{1},    自定义3 = Table.FromRows(自定义2, name)in    自定义3

这个技巧是处理 “多层级堆叠报表” 的通解: 

志愿填报、人事报表、财务汇总、多层级堆叠报表…… 

只要是 “头 + 体” 堆叠结构,都能用这套思路一键整理。

完整示例文件 + 可复用代码 已整理好, 

后台回复关键词 F260413 自取。 

如果你有任何数据处理方面的难题,也欢迎在评论区留言,我们一起交流。

💬 如需加群交流,后台回复 “进群”  或 加我微信:marchinks(备注进群)

往期推荐:

合集:PQ实战案例系列

合集:M函数系列

合集:Python办公自动化实战

如何批量在子文件夹内新建文件夹并移动文件

VBA案例:抽签生成随机对阵

Power Query 案例 46:用 “双层循环” 秒杀绩效波动难题

Power Query 案例 45:还在用VLOOKUP查BOM?递归3秒搞定无限层级反查!

Power Query 案例 44:告别繁琐公式!一键搞定跨时间段工时匹配统计

Power Query 案例 43:志愿 + 分数自动匹配,录取名单一键生成!

Power Query 案例 42:这种奇葩表格,谁做谁崩溃!教你个万能清洗模板

还没关注?↑↑↑伸出手指点上方“名片”这里