[已解决] Power Query中根据条件替换

  [复制链接]
查看131064 | 回复130 | 2021-2-18 23:16:10 | 显示全部楼层 |阅读模式
原始数据替换后S-A-M3AS-A-M2AS-A-M1AA-M2AB-M3BB-3-M3B-3如图,简单说就是开头有S-的去掉S-,结尾有-M*的去掉-M*,其他部分不变。
Excel里替换很容易,但是Power Query里好像不支持通配符,不知道该怎么办了。
我尝试按分隔符提取S-以后的,结果凡是开头非S-的都变成空值了……

11102111902093.zip (6.32 KB, 下载次数: 0)
回复

使用道具 举报

哈哈BB | 2021-2-18 23:22:10 | 显示全部楼层
还有A和B只是例子,实际要提取的字符长度不固定,中间也可能包含其他的"-"符号,只是要去除开头和结尾的那两处
回复

使用道具 举报

武士 | 2021-2-18 23:30:10 | 显示全部楼层
  1. let

  2.   Source = Excel.CurrentWorkbook(){[Name="表1"]}[Content],

  3.   a = Table.TransformColumnTypes(Source,{{"原始数据", type text}}),

  4.   b = Table.AddColumn(a,"替换结果",each Text.Combine([x=Text.Split([原始数据],"-"),y=List.Transform({0..List.Count(x)-1},each if (x{_}="S" and _=0) or (Text.Start(x{_},1)="M" and _=List.Count(x)-1) then null else x{_})][y],"-"))

  5. in

  6.   b
复制代码
回复

使用道具 举报

fs332771 | 2021-2-18 23:31:11 | 显示全部楼层
参考处理步骤,应该可以解决你的问题

11102111902094.zip (15.47 KB, 下载次数: 0)
回复

使用道具 举报

宇文寒涛 | 2021-2-18 23:40:11 | 显示全部楼层
参考处理步骤,应该可以解决你的问题


谢谢,记下了,用这个做起来还是蛮复杂的,要是Excel也有这种记住处理步骤的功能就好了,也许单纯用连接导入数据,然后录个宏会更快吧
回复

使用道具 举报

我怕谁 | 2021-2-18 23:44:11 | 显示全部楼层
谢谢,记下了,用这个做起来还是蛮复杂的,要是Excel也有这种记住处理步骤的功能就好了,也许单纯用连接 ...


录宏也可以解决,PQ的思路也不难
回复

使用道具 举报

飞天小猪 | 2021-2-18 23:48:11 | 显示全部楼层
谢谢,记下了,用这个做起来还是蛮复杂的,要是Excel也有这种记住处理步骤的功能就好了,也许单纯用连接 ...


这个问题用Power Query分步骤处理起来并不复杂,核心步骤其实只有2个,也不需要涉及太复杂的函数。相对于录制宏来说,Power Query的步骤管理非常简单,对代码的要求要低很多。



11102111902091.png
11102111902095.rar (14.18 KB, 下载次数: 0)
回复

使用道具 举报

有心人 | 2021-2-18 23:55:11 | 显示全部楼层
从目前已知的数据源情况来看,要达到表中的结果,只需要Text.BetweenDelimiters就可以了。这个函数有5个参数,当启用最后两个参数,

“在找不到分隔符时”:
如果是倒着数那分隔符就会默认为字符串一开始的那个零宽位置
如果是顺着数那分隔符就会默认为字符串的结束处的那个零宽位置。

当然,数据源情况多样复杂时,这个就不适用了,比如S-或者-M不仅出现在首尾,中间也有出现。
这是个神奇的函数,容易绕晕,以下供参考,{0,1}中1表示倒着数,0表示索引,意思就是倒着数第一个“S-”,
第五参数未启用,默认是从第一个分隔符S-所在的位置,顺着数出现的第一个“-M”
  1. = Table.AddColumn(源,"结果",each Text.BetweenDelimiters([原始数据],"S-","-M",{0,1}))
复制代码
11102111902092.jpg
回复

使用道具 举报

dg_gaga | 2021-4-30 15:37:26 来自手机 | 显示全部楼层
前排支持下
回复

使用道具 举报

benny1982 | 2021-4-30 18:20:43 | 显示全部楼层
回个帖子支持一下!
回复

使用道具 举报

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

本版积分规则