咔片PPT · AI自动生成演示文稿,模板丰富、排版精美 讯飞智文 · 一键生成PPT和Word,高效应对学习与办公

本期内容旨在通过不同的方法来学习excel Power Query中的M语言。但是在实际应用中按照实际的需求选择相应的便捷的方法。


上一期的文章给大家推送了分类小计的方法。还没有学习的小伙伴可以单击下面的链接继续学习:从Excel到PQ:分类汇总求平均值


今天给大家介绍另外一种应用案例,将下面的数据每7行为一组插入小计,对阅读量求平均值。



结果如下图所示:



今天同样地给大家讲三个思路来学习Power Query.将数据上载到Excel Power Query编辑器中。


方法思路1:使用Table.Range函数结合List.Transform函数将数据源拆分成list,然后通过构建table的方法将小计表与分组的每个table进行连接。 具体代码如下:(向右滑动可查看代码)


let 源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content], 更改 = Table.TransformColumnTypes(源,{"发布时间",type date}), 转化 = Table.Combine( List.Transform({0..Number.RoundUp(Table.RowCount(更改)/7)-1},(x)=> [ a= Table.Range(更改,x*7,7), b=a&#table(Table.ColumnNames(更改), { {"周平均阅读量",null,Number.Round(List.Average(a[阅读量]))} } ) ] [b] ) ) in 转化



方法思路2:与方法1的思路一样,同样使用Table.Range与List.Transform函数对数据源进行拆分后遍历每个List中的table,但与上面不同的是这个思路中使用是在构建的REcord中再次构建一个Table,然后再将需要的连接后的Table深化出来。最后进行合并。具体代码如下:(向右可滑动查看)


let 源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content], 更改 = Table.TransformColumnTypes(源,{"发布时间", type date}), 转化 = Table.Combine( List.Transform({0..Number.RoundUp(Table.RowCount(更改)/7-1)},(x)=> Table.FromRows( [ a=Table.Range(更改,x*7,7), b=Table.ToRows(a)& { {"周平均阅读量",null,Number.Round(List.Average(a[阅读量]))} } ] [b], Table.ColumnNames(更改) ) ) ) in 转化



方法思路3:此方法与上面的两个方法相比更加地简单,使用List.Transform与TAble.Split函数将数据源拆分后进行遍历,对拆分的每个table连接一个构建的小计的table。最后将list进行合并。具体的代码如下:(向右滑动查看)

let 源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content], 更改 = Table.TransformColumnTypes(源,{"发布时间", type date}), 转化 = Table.Combine( List.Transform( Table.Split(更改,7),(x)=>x&#table(Table.ColumnNames(更改), { {"周平均值阅读量",null,Number.Round(List.Average(x[阅读量]))} } ) ) ) in 转化



当然上面的例子中的每7行也可以做成一个自定义参数,根据自己的需要去输入值即可。