乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > excel工资表-Power Query分步制作工资条,很容易理解

excel工资表-Power Query分步制作工资条,很容易理解

作者:乔山办公网日期:

返回目录:excel表格制作

我们讲过了很多次的List.Transform与List.TransformMany循环与嵌套循环,其实工资表到工资条就是一个循环控制,每条数据添加一行标题:


工资表用这个表代替,ABC是标题行,下面是内容:


我们要的结果是这样的:


为了便于理解我们分步来进行:


我们会用到5个函数:


Table.ToRows:表格数据变成列表


Table.ColumnNames:获取表格列名称


Table.FromRows:从行数据生成表


List.TransformMany:多重循环


List.Transform:单选环


Table.ToRows:

这个函数很简单,它生成一个由列表组成的列表,列表的列表,最终的数据内容是表的一行数据:


Table.ColumnNames:

这个函数也很容易理解,得到的是表格列名称的列表,俗称表头:


Table.FromRows:

这个函数要求的参数是列表的列表,也就是Table.ToRows产生的那样的结果:


我们用LR作为参数就生成了一个COLUMN为默认表头的表格。


List.TransformMany:

这个函数有点复杂,能够得到的参考也有限:


三个参数:


  • 第一参数:列表
  • 第二参数:函数指向嵌套列表,单个参数
  • 第三参数:结果函数,双参数,x对应第一参数列表元素,y对应第二参数

我们看第一个例子:


  • T[A]:表格的A列是一个列表
  • (x)=>T[B]:第二参数指向表格B列
  • (x,y)=>x&y:结果是A列B列合并

再看一个例子:


这里的第二参数我们没有使用自定义形式的,使用的是each,这里”_“代表的是第一参数中的元素,同样的结果函数下,得到是A列的重复。


List.Transform:

我们使用单循环来做这个表格:


List.Transform(LR,each Table.FromRows({TN,_}))


{TN,_}:TN是表格的列标题名称列表,_代表的是LR的元素,而LR是表格转换成的列表,外侧的大括号,声明由这两个列表组成一个新的列表。


Table.FromRows({TN,_}):由行数据生成一个表格。


List.Transform(LR,each Table.FromRows({TN,_})):LR一共有三行数据,每行数据添加一行表头生成了三个表格。


我们把这个表格组成的列表展开就得到了我们想要的工资条。


经过上面的准备,我们用List.TransformMany来制作工资条:


我们来看这样的一个列表,第二行是表格数据的第一行,第一行就是原来的表头。


List.TransformMany(LR,each {TN,_},(x,y)=>y)


LR = Table.ToRows(T)


TN = Table.ColumnNames(T)


其实我们在第二参数中做了列表组合,第一参数中的元素也就是每行数据与表头做组合,结果就返回这个组合。


这个就是最终的结果,与上面的写法稍有不同,就是第二参数的写法:


  • each _
  • (x)=>

这两种形式是可以互相替换的。


最外层我们用Table.FromRows就直接得到我们想要的结果。


以上是我们制作工资条的分步,把这个过程中的代替参数写成M函数本体,就是整个条语句:


我们在实际解决问题的过程中,也可以使用这样的方法,如果对于问题没有直接的思路,可以先分步实现,最后做出组合,这有点像Excel中写公式一样,用辅助列先做出分步结果,得到最终结果,然后再试着编写一条公式解决问题


本文标签:excel工资表(55)

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网