Vba:如何编写 averageif 和 averageifs 函数
您可以使用以下方法在 Excel 中使用 VBA 编写 AVERAGEIF 和 AVERAGEIFS 函数:
方法一:VBA中的AVERAGEIF函数
Sub Averageif_Function()
Range(" E2 ") = WorksheetFunction.AverageIf(Range(" A2:A12 "), " Mavs ", Range(" B2:B12 "))
End Sub
此特定示例将计算范围B2:B12中的平均值,其中范围A2:A12中的对应值等于“Mavs”,然后将结果分配给单元格E2 。
方法2:VBA中的AVERAGEIFS函数
Sub Averageifs_Function()
Range(" E2 ") = WorksheetFunction.AverageIfs(Range(" C2:C12 "), Range(" A2:A12 "), " Mavs ", Range(" B2:B12 "), " >20 ")
End Sub
此特定示例将计算范围 C2:C12 中的平均值,其中范围A2:A12中的值等于“Mavs”并且范围B2:B12中的值大于 20,然后将结果分配给单元格E2 。 。
以下示例展示了如何在 Excel 中的以下数据集(包含有关各种篮球运动员的信息)中实际使用这些方法:
示例 1:VBA 中的 AVERAGEIF 函数
假设我们要计算小牛队球员得分栏中的平均值。
我们可以创建以下宏来执行此 AVERAGEIF 函数:
Sub Averageif_Function()
Range(" E2 ") = WorksheetFunction.AverageIf(Range(" A2:A12 "), " Mavs ", Range(" B2:B12 "))
End Sub
当我们运行这个宏时,我们会收到以下输出:
请注意,单元格E2包含值18.25 。
这告诉我们,小牛队球员的平均得分是 18.25。
我们可以通过手动计算小牛的平均球员得分来验证这是正确的:
小牛球员平均得分:(22 + 10 + 29 + 12) / 4 = 18.25 。
示例 2:VBA 中的 AVERAGEIFS 函数
假设我们要计算满足以下条件的球员助攻栏中的平均值:
- 该球员是小牛队的一员。
- 该球员得分超过20分。
我们可以创建以下宏来执行此 AVERAGEIFS 函数:
Sub Averageifs_Function()
Range(" E2 ") = WorksheetFunction.AverageIfs(Range(" C2:C12 "), Range(" A2:A12 "), " Mavs ", Range(" B2:B12 "), " >20 ")
End Sub
当我们运行这个宏时,我们会收到以下输出:
请注意,单元格E2包含值9 。
这告诉我们,小牛队中得分超过 20 分的球员的平均助攻数是 9 次。
注意:在此示例中,我们使用两个条件范围创建了 AVERAGEIFS 函数,但您可以在WorksheetFunction.AverageIfs方法中使用任意多个条件范围。
其他资源
以下教程说明如何在 VBA 中执行其他常见任务:
VBA:如何计算范围的平均值
VBA:如何编写 SUMIF 和 SUMIFS 函数
VBA:如何编写 COUNTIF 和 COUNTIFS 函数