一、先搞懂它是干嘛的
Table.ReplaceValue 函数,说白了就是帮你给表格里的数据 "换衣服"—— 把旧值换成新值。它的用法拆解一下特简单:
Table.ReplaceValue(要改的表格, 要换掉的旧值, 要换成的新值, 替换规则, 要改哪些列)
举个例子哈,比如有个表格,第二列是 "销售额",里面有包含"万"这些值,没办法用于计算,得转换类型。

直接转换列的类型为整数,会报错。

第一步就得先所有的 "万" 都换成 "0000",再转换类型。该咋弄?
很简单!选中 "销售额" 这一列,点【转换】→【替换值】,第一个框输 "万",第二个框输 "0000",确定!你看,数值立马变身了~

这时候系统会自动生成一个函数:
替换的值 = Table.ReplaceValue(源,"万","0000",Replacer.ReplaceText,{"销售额 "})

翻译成人话就是:在这个表格的 "销售额" 列里,把文本里的 "万" 换成 "0000"(Replacer.ReplaceText 就是专门处理文本替换的)。
要是你勾选了 "单元格匹配"(就是只替换整个单元格都是 "A" 的情况),这时候替换规则会变成 Replacer.ReplaceValue。比如单元格只有数据是 "万"这个字,才能换成 "0000";"1万"这样带其他字符的,就换不了啦。
想同时改好几列?也简单!比如想在 "销售额" 和 "成本" 两列都换 "万" 为 "0000",最后一个参数写成{"销售额","成本"}就行,一下子搞定~
二、再聊聊细节:不止换文本,还能换空值
有时候表格里会有 "空值"(null),比如下面这个表,"级别" 列是 A、B、C,后面的 "子级别 1""子级别 2" 有的填了值,有的是空的。

如果想把所有空值都换成 "无内容",用这个函数就行: 替换 = Table.ReplaceValue(Source, null, '无内容', Replacer.ReplaceValue, List.Skip(Table.ColumnNames(Source)))
这里的小技巧是:Table.ColumnNames(Source)能拿到所有列名,List.Skip跳过第一列("级别"),剩下的就是所有子级别列,不用一个个写列名,超方便!
要是想把空值换成对应 "级别" 的内容呢?比如 "A" 那行的空值都换成 "A",改一下新值就行: = Table.ReplaceValue(Source, null, each [级别], Replacer.ReplaceValue, ...) 这里的each [级别]就是 "每一行对应的'级别'列内容",是不是很灵活?

三、进阶玩法:规则自定义,想咋换就咋换
这个函数厉害的地方在于:旧值、新值可以是任何类型(文本、数字、空值都行),替换规则还能自己定!
先看它的完整参数: Table.ReplaceValue(表格, 旧值, 新值, 替换规则函数, 要改的列)
这里的 "替换规则函数" 就像个小裁判,决定怎么换。比如Replacer.ReplaceValue是 "完全匹配才换",但我们还能自定义规则,写成(x,y,z)=>规则(x 是当前要判断的值,y 是旧值,z 是新值)。
举个成绩表的例子
比如有个成绩表,第二次考试有人缺考,成绩是空的(null)。想把有成绩的标 "参考",空的标 "缺考",用这个: = Table.ReplaceValue(Source, each [2次], '缺考', (x,y,z)=>if y is number then '参考' else '缺考', {'2次'})

这里的逻辑是:y 代表第二次考试的成绩,要是数字(有成绩)就返回 "参考",不然就返回 "缺考"。
再升级一下:想把有成绩的改成 999,空的改成 "缺考",这么写: = Table.ReplaceValue(Source, 999, '缺考', (x,y,z)=>if x is null then z else y, {'2次'}) x 是第二次考试的成绩,空的就用 z("缺考"),不然就用 y(999),超直观!

两个表格联动替换
假设有两个表:一个 "对应表"(存着仓库编号和名称,比如 123 对应 "巴春淮海路店"),一个 "替换表"(里面是仓库编号,想换成名称)。


用这个函数一步到位: = Table.ReplaceValue(替换表, each [店仓编号], 对应表, (x,y,z)=>z[店仓名称]{List.PositionOf(z[店仓编号],x)}, {'店仓编号'})

逻辑超简单:x 是替换表里的编号,在对应表(z)里找到它的位置,然后把对应位置的名称拿过来,编号就换成名称啦~
给空值填合计数
比如有个仓库数据表格,最后一行是 "汇总",但数量是空的(null),想填上该仓库的总数量,怎么办?

第一步:先按仓库分组算合计,用Table.Group函数生成一个 "合计表"(比如仓库 1 合计 24,仓库 2 合计 106);

第二步:用替换函数把空值换成合计数: = Table.ReplaceValue(Source, each [店仓编号], 合计表, (x,y,z)=>if x is null then z[合计]{对应位置} else x, {'数量'})

搞定!汇总行的空值就自动填上合计数啦~
总结一下
Table.ReplaceValue 函数真的超灵活,不管是换文本、填空值,还是跨表联动、自定义规则,它都能搞定。只要记住 "表格、旧值、新值、规则、列" 这几个要素,多试几次,你也能玩得很溜!