小勤:用RELATED或LOOKUPVALUE函数都是精确匹配,但,有时候我想实现分区间的操作,怎么办?类似LOOKUP函数(或VLOOKUP函数的模糊匹配)功能,比如说有价格区间如下图所示:
怎么用来对如下产品表按单价进行区间划分?
大海:类似这种分区间的问题,我一般建议作为数据预处理的一部分,即放在Power Query里进行处理,在Power Pivot里即可以用于做相应的计算。所以,我在以前的Power Query方面的文章《PQ-M及函数:实现Excel中的lookup分段取值(如读取不同级别的提成比例)》里讲过类似的解法。
当然,这个问题在Power Pivot里也不难,公式如下:
单价区间 = CALCULATE(
VALUES('价格区间'[区间]),
FILTER(
'价格区间',
'价格区间'[单价_min]<='产品'[单价]
&&'价格区间'[单价_max]>'产品'[单价]
)
)
公式思路:
小勤:这个其实跟Power Query里的Table.SelectRows筛选得到某行然后再取值的思路很像啊。
大海:对的,实际思路都是差不多的,就是公式的写法不一样而已。同时,这种用具体条件筛选得到数据的方法,其实是表间数据匹配的最根本(通用)方法,你可以通过写各种各样的条件去把需要的数据筛选出来,然后取相应的值。比如类似RELATED函数的匹配:
cal_库存 = CALCULATE(
VALUES('产品'[库存量]),
FILTER(
'产品',
'产品'[产品名称]='订单明细'[产品]
)
)
小勤:嗯。理解了,这的确是一个通用的思路。只是如果表间有关系,而条件有不复杂的,就可以直接用RELATED或LOOKUPVALUE等一个函数搞定了。
在线M函数快查及系列文章链接(建议复制到浏览器中打开后收藏使用):
https://app.powerbi.com/view?r=eyJrIjoiZDVhZDBlMTYtNDkzNC00YWFjLWFhMmMtMmI3NTk2Y2ZhMzc3IiwidCI6ImUxMTAyMjkxLTNkYzUtNDA1OC1iMDc3LWQ0YzU4YWJkMWRkOCIsImMiOjEwfQ%3D%3D
注意,因为公众号文章是不能直接通过点击的方式跳转到外部链接的,所以需要大家动手复制到浏览器中打开。
本文分享自 Excel到PowerBI 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!