如何在Power Query中获取与Expected列最匹配的列值
Power Query 实现匹配最接近Expected值的方法
直接按下面步骤操作,完全对应你之前用的Excel INDEX/MATCH逻辑:
- 打开Power Query编辑器,选中目标数据表格,点击添加列 > 自定义列
- 在弹出的公式框中粘贴这段M语言代码:
List.Min( List.Transform( {[Week 1], [Week 2], [Week 3]}, each [Value = _, Diff = Number.Abs(_ - [Expected])] ), (x) => x[Diff] )[Value]
- 点击确定,新列就会自动算出Week 1/2/3中与Expected最接近的数值
代码逻辑拆解
{[Week 1], [Week 2], [Week 3]}:把当前行的三列目标数值打包成一个列表List.Transform(..., each [Value = _, Diff = Number.Abs(_ - [Expected])]):遍历列表里的每个值,生成包含原始值和对应差值绝对值的记录列表List.Min(..., (x) => x[Diff]):以差值(Diff)为判断依据,找出记录列表中差值最小的那条记录[Value]:提取该记录里的原始数值,就是最终要的结果
如果遇到多个值与Expected的差值完全相同(比如Week1和Week2的差值一致),这段代码会返回列表中第一个出现的数值,和Excel里MATCH匹配首个结果的逻辑完全一致。
内容的提问来源于stack exchange,提问作者Brian Schmitz
相关产品推荐
相关产品推荐

