前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PQ-M及函数:实现Excel中的lookup分段取值(如读取不同级别的提成比例)

PQ-M及函数:实现Excel中的lookup分段取值(如读取不同级别的提成比例)

作者头像
大海Power
发布2021-08-30 10:45:16
1.9K0
发布2021-08-30 10:45:16
举报
文章被收录于专栏:用户8950297的专栏

小勤:我现在有个按营业额不同等级的提成比例表,怎么用Power Query读到营业额数据表里?如下图所示:

大海:这个问题如果是在Excel里的话,用Lookup函数非常简单。

小勤:这我知道啊,但我要考虑跟其他数据处理过程都做成全自动的,所以还是考虑用PQ来处理,但PQ里却好像没有Lookup函数。

大海:嗯。虽然PQ里没有Lookup函数,但是,用PQ处理也不复杂,主要是使用Table.SelectRows和Table.Last函数来实现。写法如下:

Table.Last(

Table.SelectRows(

提成比率表,

(t)=>t[营业额]<=[营业额]

)

)[提成比例]

其实现思路如下:

1、用Table.SelectRows函数筛选提成比率表里营业额小于数据源表当前行营业额的所有数据,类似于在Excel中做如下操作(比如针对营业额为2000的行,到提成比例表里取数据):

那么,Table.SelectRows的结果如下图所示:

2、在Table.SelectRows得到相应的结果后,我们就可以用Tabe.Last该结果的最后一行,即:

3、得到筛选表最后一行后,要取提成比例,即可以直接用“提成比例”字段名来得到。

小勤:Table.SelectRows函数感觉有点难啊,里面为什么有个(t)=>t[营业额]<=[营业额]?

大海:这其实是Table.SelectRows进行筛选表操作时的条件,这相当于将一个自定义函数用于做条件判断,其中的(t)表示将提成比例表作为参数,而t[营业额]表示提成比例表里的营业额列,而最后面的[营业额]指的是数据源表里的营业额,这里面注意不要搞乱了。如下图所示:

实际上,你还可以先写一个自定义函数,然后直接在Table.SelectRows里面进行引用,具体写法如下:

后面就可以引用该自定义函数完成数据的匹配,如下图所示:

小勤:嗯,这种分开编写自定义函数的感觉好像更容易理解一些。

大海:PQ里的函数式写法跟Excel里的公式不太一样,慢慢适应就好了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-01-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel到PowerBI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档