在Power Query中供应了强大更换函数与功能。
可以通过M公式对table,lsit以及record中的内容进行更换。

本期内容紧张讲解Power Query中关于更换的函数Table.ReplaceValue函数。
案例的紧张来源于微信里关于Power Query的一个案例。

如上图所示,将左侧的数据更换成右侧的数据。
即将左侧的学科列的“算术”与“数数”的内容更换成“数学”。

replacerreplacejsp从Excel到PQ关于调换功效函数TableReplaceValue jQuery

如果通过Power Query中的鼠标操作的方法,可以利用【转换】选项卡下中的更换值的内容,分别进行两次更换成想要的内容。
如图所示:

再实行一次上面的步骤即可完成所有的更换。
再看一下上面的步骤天生的公式:

更换1 = Table.ReplaceValue(源,"算术","数学",Replacer.ReplaceText,{"学科"}),更换2 = Table.ReplaceValue(更换1,"数数","数学",Replacer.ReplaceText,{"学科"})

虽然可以将上面的两个公式嵌套到一起去,但是还是显得十分地麻烦与冗长。

再来查看一下关于Table.ReplaceValue函数的语法:

function (table as table,oldValue as any,newValue as any,replacer as function,columnsToSearch as list) as table

从上面的该函数的语法可以看出,输出的结果为一个表,第一个参数是一个table,也便是源是一个表,要更换的内容为any,可以是任意类型,更换后的类型也是一个any,第4个参数比较故意思的是一个function,也便是说第4个参数可以是无限扩展的。
在上面的通过鼠标操作的天生的第4个参数是一个更换器Replacer.ReplaceText。
那么不考虑这个更换器,在手工书写M的时候还可以自己布局一个函数做为更换器。

故上面的更换的两个步骤可以写成一个公式,即:

= Table.ReplaceValue(源,{"算术","数数"},"数学",(x,y,z)=>if List.Contains(y,x) then z else x,{"学科"})

这个公式很故意,也十分地奥妙。
但是对付初学者来说,该公式中定义的第4个参数为一个function,理解起来不是特殊地好理解。

上述公式中的x指的是当前的操作的行,y为要更换的list列表,即:{"算术","数数"},而z为更换后的新值。
以是这三个值都是变量。

List.Contains(y,x)这一部分是判断当前的学科的值是否在y中被包含,List.Contains是按y的类型来决定的,返回的结果逻辑值,如果包含,那么返回TRUE,否则返回FALSE。
如:第2行中学科的值为“算术”,为上述公式中的x,判断y中是否包含x,即“算术”是否在list列表{“算术”,“数数”}中涌现过,而“算术”恰好涌现过,以是结果为TRUE。

再根据IF函数来判断,如果List.Contains的结果为TRUE,则返回结果为“数学”,如果为FALSE,也便是说不包含时,返回结果为当前的学科的值。

在Power Qeury中的M公式中,常常会涌现的一个条件判断语句:

if …… then …… else ……

除此之外,还有一个与之相匹配的的语句,也叫容错语句。
类似于Excel中的iferror函数。

try …… otherwise ……

须要把稳的是这两个语句都是小写的形式,一定要把稳。