ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 805|回复: 7

[求助] 一个关于PQ转换不规则表头的问题,详见贴内,在线等!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-12-5 11:05 | 显示全部楼层 |阅读模式
问题说明:
1.左边红色的是原始表格表头,右边蓝色是想要实现的表头,最终保留蓝色第一行表头
2.涉及到的操作,商品编码和尺码向下填充,D5:I5区域智能填充空白,然后与对应的D6:I6区域内容实现合并,合并后内容作为新的表头。
3,示例表格只是一部分,实际仓库有几十个,商品编码也有几百条。

请问能否用PQ实现这个需求?如果可以,要怎么做呢?
在线等,谢谢大家!

微信截图_20201205110119.jpg

库存及销售分布1.rar

15.78 KB, 下载次数: 6

TA的精华主题

TA的得分主题

发表于 2020-12-5 11:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这种透视表出来的表头已经极其规则了,转换起来也很容易。我认为第二行表头应该就没什么必要了。
  1. let
  2.     Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("lZExDsIwDEXvkrmVHKe0yQgzB0Cqehe6wNihgBjhACDmwnGISm+Bo7QsDLWlOPlyXr6+lbJU/rjzbd2/Tv2lVonyj24Szed+JUFr+X62Ua1GVSWlip3hsB32TXjQtf52ZnXCa+0ADABm1EYbNqoFlaYy44n/qGOjBvionkdz0AUzwIhyAkwoP4DBOVRrC5iG682azyIHdpCnoS1AJbaiDIYBo6PpkBX4h0psOYEJNqlmG0eWaVwIjAuZsWC8CDP/I8IZD7aC+ez8fNUX", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t, Column3 = _t, Column4 = _t, Column5 = _t, Column6 = _t, Column7 = _t, Column8 = _t]),
  3.     #"Replaced Value" = Table.ReplaceValue(Source,"",null,Replacer.ReplaceValue,Table.ColumnNames(Source)),
  4.     #"Transposed Table" = Table.Transpose(#"Replaced Value"),
  5.     #"Filled Down1" = Table.FillDown(#"Transposed Table",{"Column1"}),
  6.     #"Added Custom" = Table.AddColumn(#"Filled Down1", "Custom", each [Column1] & ([Column2]??"")),
  7.     #"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Column1"}),
  8.     #"Reordered Columns" = Table.ReorderColumns(#"Removed Columns",{"Custom"} & List.RemoveItems(Table.ColumnNames(#"Removed Columns"), {"Custom"})),
  9.     #"Transposed Table1" = Table.Transpose(#"Reordered Columns"),
  10.     #"Filled Down" = Table.FillDown(#"Transposed Table1",{"Column1", "Column2"})
  11. in
  12.     #"Filled Down"
复制代码
image.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-12-5 12:31 | 显示全部楼层
ThxAlot 发表于 2020-12-5 11:30
这种透视表出来的表头已经极其规则了,转换起来也很容易。我认为第二行表头应该就没什么必要了。

兄弟,能把做好的表传上来不?谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-12-5 12:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ThxAlot 发表于 2020-12-5 11:30
这种透视表出来的表头已经极其规则了,转换起来也很容易。我认为第二行表头应该就没什么必要了。

我大概看懂了,不过有一个问题,兄弟第一步是做了转置还是逆透视呢?总之是把商品编码这一列放在了横向排列,就是不知道PQ里最多可以容纳多少列,因为实际中,我的工作表商品编码有上千个

TA的精华主题

TA的得分主题

发表于 2020-12-5 16:21 | 显示全部楼层
详情见附件!原表向右或向下可以随意拓展,一键刷新即可!另外还得友情提醒一下,日常工作中做表格时一定要注意数据源的规范,规范的数据源只需简单的透视表即可完成各种复杂的统计工作。

库存及销售分布1.zip

23.04 KB, 下载次数: 11

TA的精华主题

TA的得分主题

发表于 2020-12-5 16:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
foreverjhlc 发表于 2020-12-5 12:38
我大概看懂了,不过有一个问题,兄弟第一步是做了转置还是逆透视呢?总之是把商品编码这一列放在了横向排 ...

第一步是做的转置,因为懒得手写代码了,就利用PQ里现成的纵向填充的功能,把表转置后填充;PQ最多可以处理2^14列,即16,384列,一两千列的话没任何问题。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-12-8 11:17 | 显示全部楼层
123-456789 发表于 2020-12-5 16:21
详情见附件!原表向右或向下可以随意拓展,一键刷新即可!另外还得友情提醒一下,日常工作中做表格时一定要 ...

你好,为什么我把你文件里的代码放到我的表格里的高级编辑器里,出不来结果了,提示对方是由高版本创建的。我的是EXCEL2019
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-15 16:55 , Processed in 0.039492 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表