按区间查找匹配,应用场景挺常见的,比如电费区间定价,销售按业绩区间提成,相关案例我也写过不少。
今天教一教如何巧用 M 函数轻松搞定。
案例:将下图 1 中左侧数据表的业绩按以下规则与右侧匹配,计算出奖金系数。
业绩 <100,系数为 0;
业绩 >=100,系数为 0.8;
业绩 >=200,系数为 1;
业绩 >=300,系数为 1.1;
业绩 >=400,系数为 1.2;
效果如下图 2 所示。
解决方案:1. 选中左侧数据表的任意单元格 --> 选择工具栏的“数据”-->“从表格”
2. 在弹出的对话框中保留默认设置 --> 点击“确定”
表格已上传至 Power Query。
3. 选择工具栏的“主页”-->“关闭并上载”-->“关闭并上载至”
4. 在弹出的对话框中选择“仅创建连接”--> 点击“加载”
5. 选中右侧数据表的任意单元格 --> 选择“数据”-->“从表格”
6. 点击“确定”。
7. 选中“查询”区域中的“表1”--> 选择工具栏的“添加列”-->“自定义列”
8. 在弹出的对话框中输入以下公式 --> 点击“确定”:
Number.RoundDown([业绩],-2)
公式释义:
Number.RoundDown 函数的作用是向下舍入;
由于“业绩”列是整数,所以就将个位和十位向下取整后变成 0
9. 选择工具栏的“主页”--“合并查询”
10. 在弹出的对话框中选中“自定义”列 --> 在下拉菜单中选中“表2”--> 选中“起始值”列 --> 点击“确定”
11. 点开“表2”旁边的扩展钮 --> 仅勾选“系数”--> 取消勾选“使用原始列名作为前缀”--> 点击“确定”
12. 选择工具栏的“添加列”-->“条件列”
13. 在弹出的对话框中按以下方式设置:
列名:切换为“选择列”--> 选择“系数”
运算符:选择“不等于”
值:输入 null
输出:切换为“选择列”--> 选择“系数”
点击“添加子句”
14. 在新的一行条件设置中按以下方式设置 --> 点击“确定”:
列名:切换为“选择列”--> 选择“自定义”
运算符:选择“小于”
值:输入 100
输出:输入 0
ELSE:输入 1.2
15. 删除“自定义”和“系数”列。
16. 将“自定义.1”的列名修改为“系数”。
17. 选择工具栏的“主页”-->“关闭并上载”-->“关闭并上载至”
18. 在弹出的对话框中选择“仅创建连接”--> 点击“加载”
19. 在右侧的“工作簿查询”区域选中“表1”--> 右键单击 --> 在弹出的菜单中选择“加载到”
20. 在弹出的对话框中选择“表”--> 选择“现有工作表”及所需上载至的位置 --> 点击“加载”
绿色的表格就是按区间匹配的系数。如有数据更新,可以刷新表格自动更新结果。