繁体   English   中英

使用excel公式基于其他列的首次出现的总和值

[英]Sum values based on first occurrence of other column using excel formula

假设我在Excel电子表格中有以下两列

A   B
1   10
1   10
1   10
2   20
3   5
3   5

我想使用公式将B列中代表值首次出现的B列值相加。 因此,我希望得到以下结果:

result = B1+B4+B5 = 35

即,对B列求和,其中B列与A列在同一行中。在我的情况下,如果Ai = Aj ,则Bi=Bj ,其中i,j代表行位置。 这意味着,如果A列中的两行具有相同的值,则B列中其对应的值将相同。 我可以按A列的值对值进行排序,但是我更喜欢有一个无论排序如何都起作用的公式。

我发现这篇文章涉及相同的问题,但我无法理解所提出的解决方案。

使用SUMPRODUCT和COUNTIF:

=SUMPRODUCT(B1:B6/COUNTIF(A1:A6,A1:A6))

在此处输入图片说明

这里分步说明:

  1. COUNTIF(A1:A6, A1:A6)将产生一个频率为A1:A6的数组。 在我们的情况下,它将是: {3, 3, 3, 1, 2, 2}
  2. 然后,我们必须进行以下划分: {10, 10, 10, 20, 5, 5}/{3, 3, 3, 1, 2, 2} 结果将是: {3.33, 3.33, 3.33, 20, 2.5, 2.5} 它将每个值替换为其组的平均值。
  3. 对结果求和,我们将得到: (3.33+3.33+3.33) + 20 + (2.5+2.5=35)=35

使用以上技巧,我们可以得到与将A列中每个组的第一个元素相加所得的结果相同的结果。


要使其动态化,使其随数据集的增长和缩小,请使用以下命令:

=SUMPRODUCT($B$1:INDEX(B:B,MATCH(1E+99,B:B))/COUNTIF($A$1:INDEX(A:A,MATCH(1E+99,B:B)),$A$1:INDEX(A:A,MATCH(1E+99,B:B))))

...或者只是SUMPRODUCT。

=SUMPRODUCT(B2:B7, --(A2:A7<>A1:A6))

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM