Excel之PowerQuery 逆透视的应用
网友提问:



其实知识还是要你自己去学会的,先别处理自己工作中的问题,学完后用自己掌握的知识,处理自己的问题,否则外人永远不懂您的业务,永远不知道下一步你会遇到什么BUG。
PowerQuery和ExcelVBA的方法我都会给你,先发PowerQuery稍候发ExcelVBA的文章
学ExcelVBA看合集就可以了:https://www.bilibili.com/video/BV1rt4y1a72y
第1步:将原表导入PowerQuery

第2步:第1次逆透视
按住Ctrl键,选择以下四列

依次点【转换】~【逆透视】~【逆透视其他列】

返回结果:

我们把字段名改一下
返回结果:

选中:【款号】、【部位】、【颜色】这三列,删除其它列,用鼠标操作就好了【主页】~【删除列】~【删除其它列】

第3步:第2次逆透视
复制上面逆透视的公式

= Table.UnpivotOtherColumns(更改的类型, {"款号", "面料A", "面料B", "面料C"}, "部位", "颜色")

将 {"款号", "面料A", "面料B", "面料C"} 改成 {"款号", "颜色A", "颜色B", "颜色C"}
将 "颜色" 改成 "面料"

返回:

第4步:做合并
将“删除其他列”那张表按列转列表与“第2次逆透视”这张表的【面料】列合并后转成表,加表头

第5步:修改列
修改【部位】列,将颜色替换为空字符,最后用鼠标去调一下列的顺序。


现在说一下进阶部分,因为我们之前两次逆透视都是固定写法
= Table.UnpivotOtherColumns(更改的类型, {"款号", "面料A", "面料B", "面料C"}, "部位", "颜色")
= Table.UnpivotOtherColumns(更改的类型, {"款号", "颜色A", "颜色B", "颜色C"}, "部位", "面料")
问题就在这红色部分,假设以后有面料D、E、F... 颜色D、E、F
怎么办?我们需要写动态列表,替换它,我们先获取字段名列表

我们要按红色规律取一次,蓝色规律取一次。我们学过表的循环取行,列表也是一样,只是把Table改成List,功能上没有区别

但是,列表这个功能的函数叫 List.Alternate 把后面的Rows取消掉了,因为表有行,列表没有行,只有元素个数。


把这两个公式代替替换我们上面的固定写法就OK了。做好的课件我发到评论区了,可以下载学习。
以后我们增加行或列

刷新生成的表


PowerQuery教程:https://www.bilibili.com/video/BV1oa4y1j75e