ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 有两行的逆透视

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-12-31 09:04 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
两个行的逆透视.rar (11.29 KB, 下载次数: 35)

TA的精华主题

TA的得分主题

发表于 2020-12-31 09:24 | 显示全部楼层
PowerQuery参考解法(常规的基操套路)
微信截图_20201231092238.png

两个行的逆透视.zip

17.54 KB, 下载次数: 22

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-12-31 09:35 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-12-31 13:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
合并“前两列”——选合并列、转置——合并“转置后前两列”——再转置——将第一行用作标题——选第一列逆透视其他列——拆分列

TA的精华主题

TA的得分主题

发表于 2020-12-31 16:13 | 显示全部楼层
本帖最后由 shaowu459 于 2020-12-31 16:21 编辑

仅供参考使用。。。数据多了效率非常低啊。。。
图片.png

双表头格式转换-超人.rar

15.99 KB, 下载次数: 9

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-12-31 17:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
凑个热闹,闲着也是闲着....
百万行15秒,lol....
  1. = let a = List.Transform(Table.ToColumns(Table.FirstN(源,2)),each Text.Combine(_,"#(lf)")),
  2.       b = Table.Skip(Table.Transpose(Table.Transpose(源),a),2),
  3.       c = Table.Unpivot(b,List.Skip(a,2),"y","金额"),
  4.       d = Table.SplitColumn(c,"y",Lines.FromText,{"描述","年份"})
  5.    in d
复制代码


评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-12-31 22:31 | 显示全部楼层
这一个个M函数看着都晕,你们怎么记得那么多的。。。太强了

TA的精华主题

TA的得分主题

发表于 2020-12-31 23:25 | 显示全部楼层
飞天篮球猪 发表于 2020-12-31 17:05
凑个热闹,闲着也是闲着....
百万行15秒,lol....

我刚才测试了下,5楼的代码其他不变,把Table.ToRows这部分buffer一下,加在出101万行结果,时间是23秒,还可以接受
图片.png
图片.png


评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2021-1-1 18:43 | 显示全部楼层
也来凑个热闹
  1. let
  2.     Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("dY+/bsIwEMZfxcp8keyL/44ImDt2iDKlDCykonTozgBLR5YidfJSMTC4Qk15nCZk4xVq1yCBVKST7nff+b7z5XmSQAh23xveXeX+RS4gT3plWT1PZqRfPYx841wORk/ldPw4G1cTryJFljI80cv0PymYSUZpCK8e3lz7an/qutnZtF1vmvWWpKR5rwPvbPc594+IQZASSUAG1CgQnMVKSUDkp46hGpTS5HIJ3lzSOts5FyaFBq7on4k0GiSPrBmgjt5aUsiEunLObn//yx2+F41dkeN+wbJu9XHcL4ONAoXxDMOAny/iILWIKISXPRfFLw==", 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]),

  3.     #"All Rows" = Table.ToRows(Source),
  4.     #"New Headers" = List.Transform(List.Zip(List.FirstN(#"All Rows", 2)), each Text.Trim(Text.Combine(_, "#(tab)"))),
  5.     #"New Table" = Table.PromoteHeaders(Table.FromRows({#"New Headers"} & List.Skip(#"All Rows", 2)), [PromoteAllScalars=true]),
  6.     #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"New Table", {"Account Code", "Account Description"}, "Attribute", "Amount"),
  7.     #"Split Column by Delimiter" = Table.SplitColumn(#"Unpivoted Other Columns", "Attribute", Splitter.SplitTextByDelimiter("#(tab)", QuoteStyle.Csv), {"Attribute.1", "Attribute.2"})
  8. in
  9.     #"Split Column by Delimiter"
复制代码

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2021-1-1 19:08 | 显示全部楼层
飞天篮球猪 发表于 2020-12-31 17:05
凑个热闹,闲着也是闲着....
百万行15秒,lol....

看官方的说明文档,PQ最多支持2^14列;看来中间步骤(Table.Transpose(Table.Transpose(源),a))的table所包含的列数量是可以超过这个限制的。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-15 16:40 , Processed in 0.038425 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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