批量替换 | 多行多列不同字符替换为同一字符
- 问题 -
前些日子,发布了文章《10万行30列数据乘上系数,能快一些吗?含“函数作为参数”的触类旁通方法》,结果有朋友留言问,是否能实现多个旧值转换为同1个新值,在Table.ReplaceValue函数里,旧值该怎么填?
![](http://n4.ikafan.com/assetsj/blank.gif)
为此,我自己造了几个数据,要求把所有数据里的顿号、斜杠、下划线统一替换为横杠,如下图所示:
![](http://n4.ikafan.com/assetsj/blank.gif)
![](http://n4.ikafan.com/assetsj/blank.gif)
- 方法 1 -
将需要替换的内容(旧值)以列表的方式传进去,后面按列表的方式用List.Accumulate进行调用处理,公式如下图所示:
![](http://n4.ikafan.com/assetsj/blank.gif)
= Table.ReplaceValue(
更改的类型,
{"、","_","/"},
"-",
(x,y,z)=>List.Accumulate(y,x,(s,v)=>Text.Replace(s,v,z)),
{"货类", "小类"}
)
- 方法 2 -
将需要替换的内容(旧值)以字符串的方式传进去,后面用Text.ToList函数拆解为列表再用List.Accumulate进行调用处理,公式如下图所示:
![](http://n4.ikafan.com/assetsj/blank.gif)
= Table.ReplaceValue(
更改的类型,
"、_/",
"-",
(x,y,z)=>List.Accumulate(Text.ToList(y),x,(s,v)=>Text.Replace(s,v,z)),
{"货类", "小类"}
)
- 结论 -
从这个例子可以看出,对于Power Query里,如果某个参数(如这里的旧值)可以输入的数据类型没有限制,那其实旧值怎么填并不是关键,关键在于后面的处理函数怎么写。
赞 (0)