ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 怎么用Power Query整理不规则分布的数据,讲相同的code作为表头并对应相关的价格

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-5-16 09:53 | 显示全部楼层 |阅读模式
本帖最后由 jojo16 于 2020-5-16 09:57 编辑

不知道折算几维结构,能否用Power Query整理不规则分布的数据?求助? 十几万条记录怎么整理?



原始数据

原始数据

想要的结果

想要的结果

test.zip

12.82 KB, 下载次数: 12

数据

TA的精华主题

TA的得分主题

发表于 2020-5-16 14:24 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
let
    源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
    left = List.FirstN( Table.ToColumns(源) ,5),
    right = List.Skip( Table.ToColumns(源) ,5),
    combine = Table.Combine( List.Transform( List.Split( right ,2) ,each Table.FromColumns( left &_ )  )  ),
    筛选的行 = Table.SelectRows(combine, each ([Column6] <> "   ")),
    筛选的行1 = Table.SelectRows(筛选的行, each [Column6] <> null and [Column6] <> ""),
    已透视列 = Table.Pivot(筛选的行1, List.Distinct(筛选的行1[Column6]), "Column6", "Column7", List.Sum),

    重命名的列 = Table.RenameColumns(已透视列,
List.Zip({
List.FirstN(Table.ColumnNames(已透视列),5),
List.FirstN(Table.ColumnNames(源),5)
})
)
in
    重命名的列

TA的精华主题

TA的得分主题

发表于 2020-5-16 14:39 | 显示全部楼层
PQ参考解法
QQ截图20200516143841.png

转换.zip

19.08 KB, 下载次数: 9

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-5-16 19:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 jojo16 于 2020-5-16 20:12 编辑

我把这段代码放入我的excel 里出不了你这个结果呢,报错如下,是我的版本太低么,Excel 2013

Capture3.JPG
Capture4.JPG

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-5-16 20:00 | 显示全部楼层
我只能用笨办法,每次转换CD1,CHG1,用pivot column 转5次,每次生成一个表,一共5张表,最后合并5张表,最后做Group

TA的精华主题

TA的得分主题

发表于 2020-5-17 00:02 | 显示全部楼层
let
    源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
    转换 = List.Transform( Table.ToRows(源), (x)=>  List.Transform({1..(Table.ColumnCount(源)-5)/2-1} ,(y)=>  List.Range(x,0,5)& List.Range(x,y*2+5,2) ) ),
    合并 = Table.FromRows( List.Combine(转换)),
    透视 = 合并,
    已透视列 = Table.Pivot(透视, List.Distinct(透视[Column6]), "Column6", "Column7")
in
    已透视列

思路:
1.每一行转换成一列
2.每一行的前5个值跟后面的每2个值进行连接
3.然后连接所有List
4.行到表
5.透视列选择不要聚合即可

test.rar

19.02 KB, 下载次数: 4

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-5-17 00:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
如果需要求和就选择“”求和“”
如果不需要求和那就选择“”不要聚合“”

TA的精华主题

TA的得分主题

发表于 2020-5-17 15:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
增加2列新数据试试
1111111.png

样表.rar

153.33 KB, 下载次数: 1

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-15 12:36 , Processed in 0.036733 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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