[已解决] 怎么用pq从字符中提取数字并放在其他列

  [复制链接]
查看146680 | 回复138 | 2021-2-18 23:06:02 | 显示全部楼层 |阅读模式
file:///C:\Users\lenovo9797\AppData\Roaming\Tencent\Users\237305944\QQ\WinTemp\RichOle\VR2R01R4LZL3}%%GPPKOKWX.png
回复

使用道具 举报

li2121li | 2021-2-18 23:11:03 | 显示全部楼层
如图,要在a列中提取数字,并放在其他列
11077111902091.jpg
回复

使用道具 举报

开心馒头 | 2021-2-18 23:18:03 | 显示全部楼层
let
  源 = Excel.CurrentWorkbook(){[Name="表2"]}[Content],
  tb=Table.AddColumn(源,"numbers",each List.RemoveItems(Text.SplitAny([提取数字],Text.Remove([提取数字],{"0".."9","."})),{""})),
  提取值 = Table.TransformColumns(tb, {"numbers", each Text.Combine(_, ";")}),
  结果= Table.SplitColumn(提取值, "numbers", Splitter.SplitTextByDelimiter(";"))
in
  结果
回复

使用道具 举报

血刃 | 2021-2-18 23:21:03 | 显示全部楼层
let
  源 = Excel.CurrentWorkbook(){[Name="表2"]}[Content],
  tb=Table.AddColumn(源,"numbers",e ...



后边两步中,提取值这一步就不用了,直接在tb这一步的基础上Table.SplitColumn.

结果=Table.SplitColumn(tb,"numbers",each _,List.Max(List.Transform(tb[numbers],List.Count)))
这样还能动态刷新,不管单元格内有多少组数据。
回复

使用道具 举报

力仔 | 2021-2-18 23:27:03 | 显示全部楼层
后边两步中,提取值这一步就不用了,直接在tb这一步的基础上Table.SplitColumn.

结果=Table.SplitCo ...


嗯,把你这句话的第四参数删掉更简单。
回复

使用道具 举报

jedicat | 2021-2-18 23:33:04 | 显示全部楼层
fxl447098457 发表于 2019-1-10 09:29
嗯,把你这句话的第四参数删掉更简单。


哈哈,要考虑到不一样的数字的情况,比如第一个单元格3个数字,第二个是4个数字,然后后续刷新的时候是5个数字,直接省略第四参数就刷新不出来了。
回复

使用道具 举报

影子情人 | 2021-2-18 23:38:04 | 显示全部楼层
哈哈,要考虑到不一样的数字的情况,比如第一个单元格3个数字,第二个是4个数字,然后后续刷新的时候是5 ...


试了下果然。还要算出最长的list的个数来确定拆分结果列数,学习了。
回复

使用道具 举报

zihan | 2021-2-18 23:42:04 | 显示全部楼层
fxl447098457 发表于 2019-1-10 09:59
试了下果然。还要算出最长的list的个数来确定拆分结果列数,学习了。


大佬最近有没有好玩的PQ套路啊?
回复

使用道具 举报

PUREDESERT | 2021-2-18 23:46:04 | 显示全部楼层
大佬最近有没有好玩的PQ套路啊?


没什么套路。Function.ScalarVector玩过没。看过老外一篇文章说在table.addcolumn数据比较多的时候有很好的优化效果。网抓的时候也可以用。
回复

使用道具 举报

GOGOGO | 2021-2-18 23:55:04 | 显示全部楼层
没什么套路。Function.ScalarVector玩过没。看过老外一篇文章说在table.addcolumn数据比较多的时候有很好 ...


我去学习一下,Chris Webb的文章,之前瞄过一眼,没有好好看。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则