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

2021-08-31 09:57:27 浏览数 (1)

- 问题 -

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

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

- 方法 1 -

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

代码语言:javascript复制
= Table.ReplaceValue(
        更改的类型,
        {"、","_","/"},
        "-",
        (x,y,z)=>List.Accumulate(y,x,(s,v)=>Text.Replace(s,v,z)),
        {"货类", "小类"}
)

- 方法 2 -

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

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

- 结论 -

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

0 人点赞