如何在 vba 中计算加权平均值(附示例)


您可以使用以下基本语法通过 VBA 计算加权平均值:

 Sub FindWeightedAverage()

Range(" E2 ") = _
    WorksheetFunction.SumProduct(Range(" B2:B7 "), Range(" C2:C7 ")) / _
    WorksheetFunction.Sum(Range(" C2:C7 "))

End Sub

此特定示例使用B2:B7范围内的单元格作为值,使用C2:C7范围内的单元格作为权重来计算加权平均值。

然后加权平均值显示在单元格E2中。

以下示例展示了如何在实践中使用此语法。

示例:使用 VBA 计算加权平均值

假设我们在 Excel 中有以下数据集,显示了公司员工的各种销售额:

假设我们要计算价格的加权平均值,使用Amount列中的值作为值,使用Price列中的值作为权重:

我们可以创建以下宏来执行此操作:

 Sub FindWeightedAverage()

Range(" E2 ") = _
    WorksheetFunction.SumProduct(Range(" B2:B7 "), Range(" C2:C7 ")) / _
    WorksheetFunction.Sum(Range(" C2:C7 "))

End Sub

当我们运行这个宏时,我们会收到以下输出:

请注意,单元格E2包含值9.705882

我们可以通过手动计算加权平均值来验证这是正确的。

请记住,我们使用以下公式计算加权平均值:

加权平均值 = Σw i X i / Σw i

金子:

  • w i = 权重值
  • X i = 数据值

我们可以将数据集中的值代入此公式来计算加权平均价格:

  • 加权平均值 = Σw i X i / Σw i
  • 加权平均值 = (1*8 + 3*5 + 2*6 + 2*7 + 5*12 + 4*14) / (1+3+2+2+5+4)
  • 学生 A 的平均绩点 = 9.705882

这与我们使用宏计算的值相匹配。

其他资源

以下教程说明如何在 VBA 中执行其他常见任务:

VBA:如何编写 AVERAGEIF 和 AVERAGEIFS 函数
VBA:如何编写 SUMIF 和 SUMIFS 函数
VBA:如何编写 COUNTIF 和 COUNTIFS 函数

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注