批量替换 | 多行多列不同字符替换为同一字符

- 问题 -

前些日子,发布了文章《10万行30列数据乘上系数,能快一些吗?含“函数作为参数”的触类旁通方法》,结果有朋友留言问,是否能实现多个旧值转换为同1个新值,在Table.ReplaceValue函数里,旧值该怎么填?

为此,我自己造了几个数据,要求把所有数据里的顿号、斜杠、下划线统一替换为横杠,如下图所示:

- 方法 1 - 

将需要替换的内容(旧值)以列表的方式传进去,后面按列表的方式用List.Accumulate进行调用处理,公式如下图所示:

= Table.ReplaceValue( 更改的类型, {"、","_","/"}, "-", (x,y,z)=>List.Accumulate(y,x,(s,v)=>Text.Replace(s,v,z)), {"货类", "小类"})

- 方法 2 -

将需要替换的内容(旧值)以字符串的方式传进去,后面用Text.ToList函数拆解为列表再用List.Accumulate进行调用处理,公式如下图所示:

= Table.ReplaceValue( 更改的类型, "、_/", "-", (x,y,z)=>List.Accumulate(Text.ToList(y),x,(s,v)=>Text.Replace(s,v,z)), {"货类", "小类"}  )

- 结论 -

从这个例子可以看出,对于Power Query里,如果某个参数(如这里的旧值)可以输入的数据类型没有限制,那其实旧值怎么填并不是关键,关键在于后面的处理函数怎么写。

(0)

相关推荐