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 函数

添加评论

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