[已解决] 2016版Power Query如何实现判断后,进行不同的计算,替换原...

  [复制链接]
查看156250 | 回复143 | 2020-9-24 18:08:38 | 显示全部楼层 |阅读模式
原因:用Power Query还不会函数. 目前碰到如下问题,折腾了大半天找不到解决方法,诚心求教!
目的:一列中,有800,1K,1.2K,1.5M 这些数字,要将它们全部变为数字进行运算。
    其中,800不用变, 1K要转化为 1000(1*1000),1.2K要转化为1200(1.2*1000),
    1.5M要转化为1500000(1.5*1000000)。 -- K是1000的倍数,M是1000000的倍数。

详细见图,和附件。(实际数据有很多很多,为简化提取了个别数据)
10061100931421.jpg


10061100931425.rar (6.75 KB, 下载次数: 0)
回复

使用道具 举报

luanmm | 2020-9-24 18:14:39 | 显示全部楼层
if Text.Contains([监测到的频率],"k")=true then Number.From(Text.Remove([监测到的频率],"k"))*1000 else if Text.Contains([监测到的频率],"M")=true then Number.From(Text.Remove([监测到的频率],"M"))*100000 else Number.From([监测到的频率])
回复

使用道具 举报

痴心de绝对 | 2020-9-24 18:20:39 | 显示全部楼层
测试以下代码 10061100931422.png
回复

使用道具 举报

fswewwe | 2020-9-24 18:24:39 | 显示全部楼层
PQ参考解法
10061100931423.png
10061100931426.rar (16.41 KB, 下载次数: 0)
回复

使用道具 举报

xieshaoning | 2020-9-24 18:32:39 | 显示全部楼层
if Text.Contains([监测到的频率],"k")=true then Number.From(Text.Remove([监测到的频率],"k"))*1000 els ...


感谢!
但好像还不行,报错如下:Expression.Error: 有未知标识符。是否将 [field] 速记方式用于 "each" 表达式外部的 _[field]?

我输入的是:
= if Text.Contains([监测到的频率],"k")=true then Number.From(Text.Remove([监测到的频率],"k"))*1000 else if Text.Contains([监测到的频率],"M")=true then Number.From(Text.Remove([监测到的频率],"M"))*1000000 else Number.From([监测到的频率])
回复

使用道具 举报

彬彬有礼 | 2020-9-24 18:36:39 | 显示全部楼层
PQ参考解法


好像是转化过来了,但看不懂怎么转变的?

1.首先导入数据时,设定好各列数据的格式?(日期、文本等)
2.第二步“结果”,只看到:= Table.TransformColumns(源,{"监测到的频率",
each

然后我导入,用第二步这条公式时,显示错误是:Expression.SyntaxError: 应为令牌 Literal。
回复

使用道具 举报

肥婷婷 | 2020-9-24 18:38:40 | 显示全部楼层
感谢!
但好像还不行,报错如下:Expression.Error: 有未知标识符。是否将 [field] 速记方式用于 "eac ...

10061100931427.zip (16.11 KB, 下载次数: 0)
回复

使用道具 举报

xuboyy | 2020-9-24 18:46:40 | 显示全部楼层
感谢!!!
深入浅出!问题解决了也看懂了!
回复

使用道具 举报

zhouli31894 | 2020-9-24 18:52:40 | 显示全部楼层
PQ参考解法


谢谢!
回复

使用道具 举报

haohao8 | 2020-9-24 18:54:40 | 显示全部楼层
大神的List.Accumulate() 实在把握不住,只好用笨办法
10061100931424.png
10061100931428.rar (18.8 KB, 下载次数: 0)
回复

使用道具 举报

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

本版积分规则