简单二维报价表的运费计算

原数据

要求:

通过重量及分区表来计算相对应的运费。

(一) 分析需求:

要计算运费,需要有2个条件,一个是重量所对应的报价表的行,另外一个就是分区所对应的报价表的列。所以要计算运费,首先得计算这2个条件符合。

(二) 导入报价表数据

导入后的基本样式如图,这里我们没有再次处理1&2区这个字段,我可以看下做不做对于后面的公式写法影响大不大,这里先以不处理这列为例。

(三) 执行逆透视

选择重量列,执行逆透视其他列的操作,得到一个一维的数据表后直接加载到Power Pivot中当中。

(四) Power Pivot计算列书写

代码语言:javascript
复制
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度量值书写

代码语言:javascript
复制
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这个分区给处理,通过重复列然后更改标题即可。

这样表就相对比较干净统一了。

代码语言:javascript
复制
MinX(Filter('G副本',            'G副本'[属性]='表1'[分区]          && 'G副本'[G]>='表1'[重量]),     RoundUp('G副本'[值],1)     )

而且相对代码也简单一点。

如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。