Power Query 实战案例第 5 期 元数据:请求参战
处理前:
处理模板:
处理后:
获取对应姓名对应日期的工作班次
先说下思路,将表1里面每一个日期行中每一个姓名赋值对应的班次,然后将姓名当做表的标题,赋值的班次作为对应姓名列的内容,然后合并起来再与模板表的姓名标题合并,实现按模板表的姓名获取对应的班次。
但是要实现必须在不修改每个姓名的前提下,增加对应的班次,这不就是元数据吗????
先上载进入PQ,筛选掉多余行,只保留班次行与日期行,并且删除多余列。
之后转置表格,将Column1列使用Table.FillDown
向下填充,之后使用Table.ToRows
将每行转换成List。
List里面第一个值就是要添加进姓名的元数据里面的内容,使用List.Transform
循环外面的List,再使用一次List.Transform
对里面的List进行循环添加元数据,注意这里第二层的List要使用List.Skip
跳过第一个值,因为第一个值是不需要保留的元数据,每个姓名使用Text.Trim
去除首尾的空格,添加进的元数据为固定的第二层List的第一个值。
最后使用List.Zip重新组合List,成为每行List对应一个日期行的姓名。
下面就对经过List.Zip
重新组合之后的List进行循环使用#table
创建表,注意需要先使用List.RemoveNulls
去除每个List里面的null,#table
第一参数为去除null的List,第二参数需要再使用List.Transform
利用Value.Metadata
显示每个姓名的元数据。
然后将表格合并Table.Combine
。
然后使用模板表的姓名标题表连接本表。
之后上载进入表,然后取消标题行,修改表格样式,拖到对应位置。
OK
END
ლ(╹◡╹ლ)
id=59216719
Ntt.Docomo
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)