每个 unique/distinct 值的计算

Calculations for every unique/distinct values

我有一个非常大的数据集需要处理,在我的计算中有三列很重要。我们将不同的列称为 [A]、[B] 和 [C]。在 [A] 中,我有一个不同公司名称的列表,其中每个公司名称可能会出现多次。我为数据创建了一个 table 并按字母顺序对公司名称进行了排序。假设我在 A2:A5 中有公司名称 X,需要完成的计算是 SUMPRODUCT(B2:B5;C2:C5)/SUM(C2:C5)。我如何为每个 unique/distinct 公司名称计算此值并以漂亮的方式显示结果?

将两个 INDEX 函数与范围的 : 放在一起。

=IF(A2<>A3, SUMPRODUCT(INDEX(B:B, MATCH(A2, A:A, 0)):INDEX(B:B, MATCH(A2&"z", A:A)), INDEX(C:C, MATCH(A2, A:A, 0)):INDEX(C:C, MATCH(A2&"z", A:A)))/SUMIFS(C:C, A:A, A2), TEXT(,))

第一次出现是

INDEX(B:B, MATCH(A2, A:A, 0))

最后一次出现(在已排序的数据上)是

INDEX(B:B, MATCH(A2&"z", A:A))

请注意,我将您的 SUM 更改为 SUMIFS 以使生活更轻松。

在新列 D 中使用以下公式,例如在 D2 中:

=IF(A2<>A1,SUMPRODUCT(--($A:$A=A2)*$B:$B*$C:$C)/SUMIF($A:$A,A2,$C:$C),"")

并在 A 中的值发生变化时向下拖动它会写入结果

更改 A2:A10、B2:B10 和 C2:C10 以对应您的最后一行并保留 $ 用于固定引用
为了对应你的设置,我写了“;”在以下内容中:

=IF(A2<>A1;SUMPRODUCT(--($A:$A=A2)*$B:$B*$C:$C)/SUMIF($A:$A;A2;$C:$C);"")