总结不同行filter上的值

我需要计算一些销售订单的总运输成本。 数据集如下:

在这里输入图像说明

我遇到的问题是,虽然计算中每次订单只需考虑一次运输成本,但在数据集中,每个订单商品都会重复运输成本,因此一个简单的重复运输成本是:

=SUM(MyTable[Shipping]) = 90 // wrong value 

然而,我需要的是:

  • 过滤表格,每个订单只保留1行
  • 总结航运

这应该是这样的:

 =SUMX(FILTER(MyTable,<filter>),MyTable[Shipping]) = 35 // correct value 

但是我正在努力编写<filter> 。 我发现DISTINCT返回唯一订单ID的列表,但不是它们对应的行。

有没有人有任何想法,我可以写filter来正确计算运输?

Xfunction是非直观的,但非常强大 – 你在正确的路线。

我会用两个办法来处理这个问题,第一个是将运费计算在内,然后除以该订单的行数。 (下半部分的关键是ALL(),它在引用的列上打开上下文,同时保留其他上下文。)

第二个是按顺序迭代这个度量,然后求和结果。

 [Allocated Shipping] = SUM ( MyTable[Shipping] ) / CALCULATE ( COUNTROWS ( MyTable ), ALL ( MyTable[Item] ) ) [Iterated Shipping] = SUMX(VALUES(MyTable[Order]), [Allocated Shipping]) 

最简单的方法是使用Helper列。 在E2中input:

 =IF(COUNTIF($A$1:A2,A2)>1,0,1) 

并抄下来。 这将识别列A中唯一要汇总这些唯一值,请使用:

 =SUMPRODUCT(--(E2:E9=1)*(D2:D9)) 

为了您的数据:

例

值为35

当然,如果数据被过滤了,你可以使用SUBTOTAL()函数或者一个辅助列的变体。

与Gary的build议非常类似,您可以使用(在另一个col – E2中):

 =IF(COUNTIF($A$2:A2,A2)>1,D2,0) 

这将显示col E本身的交货成本。 那么你可以只是SUM(E2:E)来查看总成本(35)。