原数据
要求:
通过重量及分区表来计算相对应的运费。
(一) 分析需求:
要计算运费,需要有2个条件,一个是重量所对应的报价表的行,另外一个就是分区所对应的报价表的列。所以要计算运费,首先得计算这2个条件符合。
(二) 导入报价表数据
导入后的基本样式如图,这里我们没有再次处理1&2区这个字段,我可以看下做不做对于后面的公式写法影响大不大,这里先以不处理这列为例。
(三) 执行逆透视
选择重量列,执行逆透视其他列的操作,得到一个一维的数据表后直接加载到Power Pivot中当中。
(四) Power Pivot计算列书写
var fq=if ('表1'[分区] in {"1","2"},"1 & 2",Format('表1'[分区],"0"))var fqb=Filter(G,'G'[属性]=fq && 'G'[G]>='表1'[重量])var yf=minx(fqb,ROUNDUP([值],1))return yf
解释:
G表代表的是报价表,表1代表的是我们需要计算清单(重量和分区清单)。
首先得计算分区,1,2都是属于"1 & 2"这个分区的,所以我们得进行判断并转换。
因为在清单数据导入的时候,因为分区都是数字样子,所以可能会产生数字格式和文本格式的差异,所以这里使用Format全部进行格式化。
筛选出我们要计算的表,分区一致,因为是有重量段往上进位的影响,所以我们筛选了2个条件。
最后通过获得最小重量段的价格来反应实际的运费。
(五) Power Pivot度量值书写
SumX('表1',var fq=if ('表1'[分区] in {"1","2"},"1 & 2",FORMAT('表1'[分区],"0"))var fqb=filter(G,'G'[属性]=fq && 'G'[G]>='表1'[重量])var yf=minx(fqb,ROUNDUP([值],1))return yf)
只需要在外面嵌套一层SumX即可。
我们再回过头来讲数据清洗,把1&2这个分区给处理,通过重复列然后更改标题即可。
这样表就相对比较干净统一了。
MinX(Filter('G副本', 'G副本'[属性]='表1'[分区] && 'G副本'[G]>='表1'[重量]), RoundUp('G副本'[值],1) )
而且相对代码也简单一点。
如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。