只是一个简单的分区间问题?No,我要告诉你更通用的表间数据匹配方法!
小勤:用RELATED或LOOKUPVALUE函数都是精确匹配,但,有时候我想实现分区间的操作,怎么办?类似LOOKUP函数(或VLOOKUP函数的模糊匹配)功能,比如说有价格区间如下图所示:

怎么用来对如下产品表按单价进行区间划分?

大海:类似这种分区间的问题,我一般建议作为数据预处理的一部分,即放在Power Query里进行处理,在Power Pivot里即可以用于做相应的计算。所以,我在以前的Power Query方面的文章《PQ-M及函数:实现Excel中的lookup分段取值(如读取不同级别的提成比例)》里讲过类似的解法。
当然,这个问题在Power Pivot里也不难,公式如下:

单价区间 = CALCULATE(
VALUES('价格区间'[区间]),
FILTER(
'价格区间',
'价格区间'[单价_min]<='产品'[单价]
&&'价格区间'[单价_max]>'产品'[单价]
)
)
公式思路:
用产品的“单价”作为条件,对区间表里的单价范围(“单价_min”和“单价_max”)进行筛选(函数FILTER),得到产品单价归属的区间行;
通过VALUES函数取回对应的区间列的数据。
小勤:这个其实跟Power Query里的Table.SelectRows筛选得到某行然后再取值的思路很像啊。
大海:对的,实际思路都是差不多的,就是公式的写法不一样而已。同时,这种用具体条件筛选得到数据的方法,其实是表间数据匹配的最根本(通用)方法,你可以通过写各种各样的条件去把需要的数据筛选出来,然后取相应的值。比如类似RELATED函数的匹配:

cal_库存 = CALCULATE(
VALUES('产品'[库存量]),
FILTER(
'产品',
'产品'[产品名称]='订单明细'[产品]
)
)
小勤:嗯。理解了,这的确是一个通用的思路。只是如果表间有关系,而条件有不复杂的,就可以直接用RELATED或LOOKUPVALUE等一个函数搞定了。
赞 (0)