各位好,
之前的文章,咱们讲过名目部引导老叶为了方便剖析,须要将如下图的左表转化处置成右表。
前面咱们具体介绍过 Word 调换法,另有 Textsplit 函数的方式。概况戳文末链接。
不外,信任良多小伙伴都知道,PowerQuery 也是 Excel 特地用做数据荡涤的利器。
因此,今日小爽就来带各位来看看也许案例的 PQ 解法。
实用版块:Excel2016 以上(WPS 不实用)
难度系数:
戳戳手:该案例属于 PQ 中等难度,须要应用到一些 M 函数,各位重在进修思绪。
咱们先将数据导入到 PQ 编辑器中。
选中数据地区,在【数据】选项卡下,单击【来自表格 / 地区】,【断定】。
1、拆分到行
如果只有一列须要拆分,那好办。
咱们间接用拆分列,拆分到行。
如下图:
单列就拆分好了。
然而,咱们须要拆分到行的有两列。怎么办?
那,分辨拆分,而后将所需列兼并?
分辨拆开。
而后再兼并。
能够是能够,然而如果待拆分的列有多列,还要一个个拆分,而后链接转表,此明显并非个好的抉择。
2、兼并列
接下来,咱们来看看另外的做法。
具体思绪:
应用 Table.CombineColumns 将须要处置的列兼并;
兼并后的每行,停止轮回 (List.Transform) 拆分逗号 Text.Split;
处置后再转表处置 (Table.FromColumns);
最初开展表 (Table.ExpandTableColumn)。
看不懂,不要紧,底下有具体步调 ↓
具体步调:
单击 fx 新建步调。
获得待拆分的列名的列表 name
=List.Skip(Table.ColumnNames源))
Table.ColumnNames (源),是用来获得表格题目的函数。也就是 {"姓名","加入结束名目","事迹评分"}。
List.Skip 表现跳过几个,第二参数不写默许为 1,因此跳过 1 个,也就是 {"加入结束名目","事迹评分"}。
此样的利益是,前面新增列,也可够获得崭新待拆分的列名形成的 list。
将步调命名为 name。
兼并待拆的列
单击 fx 新建步调。
公式栏中输出:
=Table.CombineColumns源,name,each_,"a")
=Table.CombineColumns (表,须要兼并的列名形成的列表,兼并的方式,新列名)
案例中咱们须要兼并的列名,也就是第一步的 name。
=Table.CombineColumns源,//表name,//须要兼并的列名形成的listeach_,//兼并的处置,先不做处置"a"//兼并后的列名称
轮回兼并处置,将文本依照逗号拆分
修正 Table.CombineColumns 第三参数兼并处置
=Table.CombineColumns源,name,eachList.Transform(_,(x)=Text.Split(x,",")),"a")
如下图所示。
此里主要是对于兼并处置 的每行,轮回停止拆分。
List.Transform(_,//兼并列每行形成的list。(x)=Text.Split(x,",")//将每一个数据依照逗号停止拆分)
拆分后的数据,依照列停止转表
将 Table.CombineColumns 第三参数拆分后的列表依照列转表。
=Table.CombineColumns源,name,eachTable.FromColumnsList.Transform(_,(x)=Text.Split(x,",")),name),"a")
将拆分后的 lists,应用 Table.FromColumns 转换成表。
=Table.FromColums (lists, 对应题目)
按列转表后对应的题目,就是 name。
此一步命名为兼并。
开展表格
最初一步,把表扩开展就能够。
单击开展按钮,撤消勾选【应用原始列名做为前缀】,单击【断定】按钮。
间接开展,参数是写逝世的。开展的列名实在也就是 name。
因此,咱们将公式改成如下图所示。此一步能够命名为成果。
=Table.ExpandTableColumn(兼并,"a",name)
最终的 M 函数:
let源=Excel.CurrentWorkbook(){[Name="表1"]}[Content],name=List.Skip(Table.ColumnNames(源)),兼并=Table.CombineColumns(源,name,eachTable.FromColumns(List.Transform(_,(x)=>Text.Split(x,",")),name),"a"),成果=Table.ExpandTableColumn(兼并,"a",name)in成果
3、最初的话
本文讲授的是 PQ 解法,该方式波及多个函数。
▋STEP01获得待拆分的列名的列表
Table.ColumnNames 能够获得表格的题目
List.Skip 能够跳过指定个数
=List.Skip(Table.ColumnNames(源)
▋STEP02兼并指定列,先不做处置
Table.CombineColumns (表,name,each _,新列名)
▋STEP03Table.CombineColumns 的第三参数处置
轮回拆分
List.Transform+Text.Split
按列转表
Table.FromColumns
▋STEP04应用 Table.EnpandTableColumn 开展兼并的列
第二参数拆分的列名,不要写逝世。
对于该案例的其余做法,请戳:文章。
将数据表转化后,老叶就能够经由过程数据透视表停止进一步的剖析啦。
如下图:
比方上个季度,每一个名目成员加入的名目数,总分是多少;每一个名目有多少人加入,加入成员有谁。
也可够对数据停止可视化。
从全部案例中,咱们能够看到全部数据的进程。
数据录入-数据荡涤-数据剖析-数据可视化-[数据报告请示]
差别进程,所须要掌握的 Excel 知识点有所差别。
数据录入
数据考证 / 单元格格局/...
数据荡涤
函数 / VBA / PowerQuery
数据剖析
函数 / 数据透视表 / PowerPivot
数据可视化
图表 / 表格丑化等
广而告之申明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等情势),用于通报更多信息,节俭甄选时光,成果仅供参考,一切文章均包括本申明。
本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 298050909@qq.com 举报,一经查实,本站将立刻删除。如若转载,请注明出处:https://www.kufox.com//xxtj/2024-01-15/5714.html