ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 一行拆分为多行

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-1-17 13:04 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
求助,
       遇到一个变态表格,需要一行中有“,”逗号的数据拆分为多行,如附件目标结果。

哪位大神能帮忙下,万分感谢!
函数、PQ、宏多可以,只要结果正确就行。

数据处理需求-一行拆分多行.rar

7.45 KB, 下载次数: 16

TA的精华主题

TA的得分主题

发表于 2022-1-17 13:46 | 显示全部楼层
你这个B芯片片数分开安装什么逻辑来的,没有“,”啊!

TA的精华主题

TA的得分主题

发表于 2022-1-17 14:41 | 显示全部楼层
芯片片数重新计算就行了

数据处理需求-一行拆分多行.zip

15.98 KB, 下载次数: 6

TA的精华主题

TA的得分主题

发表于 2022-1-17 16:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. let
  2.     Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
  3.     A = let a = Table.SelectColumns(Source,{"B芯片数量", "B芯片片数", "B芯片片号", "B芯片批号"}),
  4. b = Table.ColumnNames(a),
  5. c = Table.TransformColumns(a,{{"B芯片数量",each List.RemoveLastN(Text.Split(_,","),1)},{"B芯片片号",each Text.Split(_,",")},{"B芯片片数",each Text.Split(_,",")},{"B芯片批号",each Text.Split(_,",")}})
  6. in List.Transform(Table.ToRows(c),each
  7.     let m = Table.Transpose(Table.FromRows(_)),
  8.         n = Table.ColumnNames(m),
  9.         o =List.Zip({n,b})

  10.     in Table.RenameColumns(m,o)
  11. ),
  12.     B = let a = Table.RemoveColumns(Source,{"B芯片数量", "B芯片片数", "B芯片片号", "B芯片批号"}),
  13. b = List.Combine({Table.ColumnNames(a),{"a"}}),
  14. c = List.Combine({Table.ToColumns(a),{A}})
  15. in Table.FromColumns(c,b),
  16.     #"Expanded a" = Table.ExpandTableColumn(B, "a", {"B芯片数量", "B芯片片数", "B芯片片号", "B芯片批号"}, {"a.B芯片数量", "a.B芯片片数", "a.B芯片片号", "a.B芯片批号"})
  17. in
  18.     #"Expanded a"
复制代码

数据处理需求-一行拆分多行.zip

16.8 KB, 下载次数: 2

TA的精华主题

TA的得分主题

发表于 2022-1-17 18:57 | 显示全部楼层
这个更简单点
  1. let
  2.     Source = Excel.CurrentWorkbook(){[Name="Source"]}[Content],
  3.     Custom1 = Table.CombineColumns(Source,{"B芯片数量", "B芯片片数", "B芯片片号", "B芯片批号"},each _,"a"),
  4.     Custom2 = Table.TransformColumns(Custom1,{"a",(t)=> Table.SelectRows(Table.FromColumns(List.Transform(t,each Text.Split(_,",") ),{"B芯片数量", "B芯片片数", "B芯片片号", "B芯片批号"}),each [B芯片片数] <>null)}),
  5.     result = Table.ExpandTableColumn(Custom2, "a", {"B芯片数量", "B芯片片数", "B芯片片号", "B芯片批号"}, {"B芯片数量", "B芯片片数", "B芯片片号", "B芯片批号"})
  6. in
  7.     result
复制代码

TA的精华主题

TA的得分主题

发表于 2022-1-19 11:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

结果有点问题,你再看看~

TA的精华主题

TA的得分主题

发表于 2022-1-19 11:30 | 显示全部楼层
我的作法。
  • let
  •     源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
  •     提取待拆分列 = Table.AddColumn(源,"分拆", each {_[B芯片批号],_[B芯片片数],[B芯片片号],_[B芯片数量]}),
  •     自定义2 =
  •     Table.TransformColumns(提取待拆分列,
  •         {"分拆", each
  •         let
  •             分拆列 =         List.Transform( _, (x)=>
  •                                     [a=  Text.From(x),
  •                                     b =  if Text.Contains(a,",") = false then Splitter.SplitTextByRepeatedLengths( Text.Length(Text.From(_{1}) )/List.Count(Text.Split(_{0},",") ) )(Text.From(x))
  •                         else Text.Split(x, ","),
  •                                     c = List.Transform(b,(StepC)=> if Text.Length(StepC)=0 then null else StepC  ),
  •                                     d = List.RemoveNulls(c)
  •                                     ][d]
  •                                         ),
  •             重组列 = List.Zip(分拆列),
  •             构造表 = Table.FromRows(重组列,{"B芯片批号","B芯片片数","B芯片片号","B芯片数量"} )
  •         in
  •             构造表
  •                                     }
  •                                     ),
  •     删除的列 = Table.RemoveColumns(自定义2,{"B芯片批号", "B芯片片数", "B芯片片号", "B芯片数量"}),
  •     展开的 = Table.ExpandTableColumn(删除的列, "分拆", {"B芯片批号", "B芯片片数", "B芯片片号", "B芯片数量"}, {"B芯片批号", "B芯片片数", "B芯片片号", "B芯片数量"})
  • in
  •     展开的


数据处理需求-一行拆分多行.7z

17.56 KB, 下载次数: 0

TA的精华主题

TA的得分主题

发表于 2022-1-19 11:32 | 显示全部楼层
luzwales 发表于 2022-1-17 13:46
你这个B芯片片数分开安装什么逻辑来的,没有“,”啊!

是的,这原始数据也挺神奇的。但按楼主目前几行资料,可以这么解:
按【B芯片批号】能够拆出来的个数,平均拆分【B芯片片数】。 但万一哪天【B芯片片数】位数不一样,那就没法解了。

TA的精华主题

TA的得分主题

发表于 2022-1-19 13:33 | 显示全部楼层

你帖子里面回复的代码格式是怎么调的。我发上来乱七八糟的的。

TA的精华主题

TA的得分主题

发表于 2022-1-19 13:46 | 显示全部楼层
junglebell 发表于 2022-1-19 13:33
你帖子里面回复的代码格式是怎么调的。我发上来乱七八糟的的。

不是有代码吗?
插入代码,在代码里面写
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 04:54 , Processed in 0.050891 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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