如何在Google表格上跳过带有字符串的行时获得加权平均值?

时间:2018-08-30 03:52:20

标签: google-sheets

我想获取A列中值的加权平均值,并获得B列中的权重。问题是A列可能具有字符串值,我想从计算中跳过这些行。与= AVERAGEIF不同,函数= AVERAGE.WEIGHTED没有实现此功能。

我该怎么做?如果B列也可以有字符串(以供将来校对),我该怎么办?

2 个答案:

答案 0 :(得分:3)

=AVERAGE.WEIGHTED(FILTER(A:A,ISNUMBER(A:A)),FILTER(B:B,ISNUMBER(A:A)))

=SUM(FILTER(A:A*B:B / sum(FILTER(B:B,ISNUMBER(A:A))),ISNUMBER(A:A)))

=SUM(FILTER(A:A*B:B / (sum(B:B) - SUMIF(A:A,"><", B:B)),ISNUMBER(A:A)))

如果两列都包含字符串,请为每个公式再添加1个条件:

=AVERAGE.WEIGHTED(FILTER(A:A,ISNUMBER(A:A),ISNUMBER(B:B)),FILTER(B:B,ISNUMBER(A:A), ISNUMBER(B:B)))

答案 1 :(得分:0)

因此,让我们假设我们的数字(我们希望)位于A2:A4中,权重位于B2:B4中。在C2中,放置

=if(and(ISNUMBER(A2),isnumber(B2)),A2,"")

并将其向下拖动到C4,以仅保留具有权重的实际数字。

类似地在D2中(并拖动到D4中),使用

=if(and(ISNUMBER(A2),isnumber(B2)),B2,"")

在E2(并拖动到E4)中,我们需要

=if(and(ISNUMBER(C2),isnumber(D2)),C2*D2,"")

那么我们的加权平均值将是:

=iferror(sum(E2:E4)/sum(D2:D4))

您可以隐藏工作列,也可以根据需要将它们放置在虚无处。