Excel:如何在空白值导致比例权重偏移的情况下获取加权平均值

Excel:如何在空白值导致比例权重偏移的情况下获取加权平均值,excel,excel-formula,weighted-average,Excel,Excel Formula,Weighted Average,我有五类。每个类别在第2行有一个权重,在第3行有一个值。在单元格G3中,我想要一个计算所有类别加权平均数的公式 主要的警告是,某些类别将没有值。如果一个类别有一个空白值,那么它的权重应该平均分配给其他有值的类别,然后取加权平均值。请参见以下两个示例: 在这张照片中,单元格C3缺少一个值。还有4个类别没有值。因此,其0.2的权重将被重新分配为四种方式,因此剩余类别中的每个类别在加权平均值中的权重都将增加(02./4=0.05)。高亮显示的单元格是所需的结果 我将用另外一个场景进一步说明: 在上

我有五类。每个类别在第2行有一个权重,在第3行有一个值。在单元格
G3
中,我想要一个计算所有类别加权平均数的公式

主要的警告是,某些类别将没有值。如果一个类别有一个空白值,那么它的权重应该平均分配给其他有值的类别,然后取加权平均值。请参见以下两个示例:

在这张照片中,单元格
C3
缺少一个值。还有4个类别没有值。因此,其0.2的权重将被重新分配为四种方式,因此剩余类别中的每个类别在加权平均值中的权重都将增加(02./4=0.05)。高亮显示的单元格是所需的结果

我将用另外一个场景进一步说明:

在上面的场景中,有两个类别缺少值,它们的权重均为0.15。有3个具有值的类别。因此,每个缺失的类别将重新分配0.15/3=0.05的权重给其余三个类别。因此,由于缺少两个类别,每个类别的权重将增加2*0.05=0.1。黄色框显示正确的加权平均值


另一个警告是,如果公式能够足够动态,能够适用于大于5个类别的范围,那就太好了。关于如何实现这样的东西有什么想法吗?

我认为这个数组公式可以做到这一点。使用Ctrl+Shift+Enter键输入它

=SUM(IF(B3:F3<>0,B3:F3*B2:F2))/SUM(IF(B3:F3<>0,B2:F2,0))
=SUM(如果(B3:F30,B3:F3*B2:F2))/SUM(如果(B3:F30,B2:F2,0))

我认为这个数组公式可以做到这一点。使用Ctrl+Shift+Enter键输入它

=SUM(IF(B3:F3<>0,B3:F3*B2:F2))/SUM(IF(B3:F3<>0,B2:F2,0))
=SUM(如果(B3:F30,B3:F3*B2:F2))/SUM(如果(B3:F30,B2:F2,0))

这似乎对我有效-我感觉它可以简化,但它只是通过问题中概述的步骤起作用:

=SUMPRODUCT(B2:F2*B3:F3)+SUMPRODUCT(SUMPRODUCT((B3:F3="")*B2:F2)*B3:F3)/COUNT(B3:F3)

如果空白单元格实际上不是空白,而是包含“作为公式的结果返回”,则可以尝试

=SUMPRODUCT(B2:F2*N(+B3:F3))+
SUMPRODUCT(SUMPRODUCT((B3:F3="")*B2:F2)*N(+B3:F3))/COUNT(B3:F3)

正如

中精彩的@XOR LX所建议的那样,这似乎对我有效-我感觉它可以简化,但它只是通过问题中概述的步骤起作用:

=SUMPRODUCT(B2:F2*B3:F3)+SUMPRODUCT(SUMPRODUCT((B3:F3="")*B2:F2)*B3:F3)/COUNT(B3:F3)

如果空白单元格实际上不是空白,而是包含“作为公式的结果返回”,则可以尝试

=SUMPRODUCT(B2:F2*N(+B3:F3))+
SUMPRODUCT(SUMPRODUCT((B3:F3="")*B2:F2)*N(+B3:F3))/COUNT(B3:F3)

正如

中的brilliant@XOR LX所建议的那样,我不确定问题出在哪里,但即使我使用ctrl-shift-enter键输入它,使其成为一个数组公式,它返回
#VALUE
该公式仅在没有空格时为我返回一个数字。否则它返回
#VALUE
您通常使用
作为分隔符还是
?或者您的空白不是“”,而是一个空格“”,我一直使用
我不确定问题出在哪里,但即使我使用ctrl-shift-enter键输入它,使其成为一个数组公式,它返回
#值
该公式仅在没有空白时为我返回一个数字。否则它返回
#VALUE
您通常使用
作为分隔符还是
?或者您的空白不是“”,而是一个空格“”,我一直在使用,
谢谢您的回复!如果空单元格实际上不是一个空白单元格,而是一个不返回任何内容的索引函数,您将如何编辑方程的这部分
(B3:F3=“”)
?如果引用的单元格为空白,index()不返回零吗?在这种情况下,
=SUMPRODUCT(B2:F2*B3:F3)+SUMPRODUCT(SUMPRODUCT((B3:F3=0)*B2:F2)*B3:F3)/COUNT(B3:F3)
可能会这样做。(很好的警告,我没有测试它)。我试着将“”放在单元格中而不是空白,但它给出了#值!这里有一个解决方法-我会把它添加到我的答案中。谢谢你的回复!如果空单元格实际上不是一个空白单元格,而是一个不返回任何内容的索引函数,您将如何编辑方程的这部分
(B3:F3=“”)
?如果引用的单元格为空白,index()不返回零吗?在这种情况下,
=SUMPRODUCT(B2:F2*B3:F3)+SUMPRODUCT(SUMPRODUCT((B3:F3=0)*B2:F2)*B3:F3)/COUNT(B3:F3)
可能会这样做。(很好的警告,我没有测试它)。我试着将“”放在单元格中而不是空白,但它给出了#值!这里有一个变通办法——我将把它添加到我的答案中。