You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在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的权重总和

把分子除以分母,就得到了你期望的非零加权平均值。

扩展小提示

如果后续你的数据集会添加新行,不想每次调整公式范围,可以把范围改成动态的(注意避开表头),比如:

=SUMPRODUCT(A2:A*(A2:A<>0), B2:B)/SUMIF(A2:A, "<>0", B2:B)

这样公式会自动计算A列和B列从第二行开始的所有有效数据。

内容的提问来源于stack exchange,提问作者mark0018

火山引擎 最新活动