如何在 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 函数