如何在Google Sheets中按条件计算非零加权平均值?
解决Google Sheets中非零值的加权平均值计算问题
嘿,刚好碰到过类似的需求,完全可以用公式轻松实现,而且绝对不会动到你的原始数据。直接看解决方案:
核心公式
在任意空白单元格输入这个公式就行:
=SUMPRODUCT(A2:A7*(A2:A7<>0), B2:B7)/SUMIF(A2:A7, "<>0", B2:B7)
公式拆解说明
咱们一步步看这个公式为啥能满足你的要求:
分子部分:
SUMPRODUCT(A2:A7*(A2:A7<>0), B2:B7)A2:A7<>0会生成一个布尔数组,Products列不为0的位置是TRUE(相当于1),为0的位置是FALSE(相当于0)- 用这个布尔数组和Products列相乘,就把Products=0的行数值变成了0,剩下的保留原始值
- 最后SUMPRODUCT把处理后的Products列和Orders列对应相乘后求和,正好得到你想要的
5*1200 + 14*1234 + ... +21*13234这个总和
分母部分:
SUMIF(A2:A7, "<>0", B2:B7)- 这个函数的作用很直接:只对Products列不为0的行,求和对应的Orders列数值,也就是
1200 + 1234 + ... +13234的权重总和
- 这个函数的作用很直接:只对Products列不为0的行,求和对应的Orders列数值,也就是
把分子除以分母,就得到了你期望的非零加权平均值。
扩展小提示
如果后续你的数据集会添加新行,不想每次调整公式范围,可以把范围改成动态的(注意避开表头),比如:
=SUMPRODUCT(A2:A*(A2:A<>0), B2:B)/SUMIF(A2:A, "<>0", B2:B)
这样公式会自动计算A列和B列从第二行开始的所有有效数据。
内容的提问来源于stack exchange,提问作者mark0018




