可以使用IFERROR函数包装Averageifs函数,以便在出现除以0的情况时返回一个特定的值(例如0或“无效分数”)而不是错误。
例如,以下代码使用两个条件对数据进行平均,如果任何一个条件为零,则返回0:
=IFERROR(AVERAGEIFS(data_range, criteria_range1, criteria1, criteria_range2, criteria2), 0)
一个更通用的解决方案是将适当的处理代码包装在函数中,以接受任意数量的条件和返回值,并在必要时处理零除错误。 以下是一个简单的示例函数:
Function SafeAverageIfs(data_range As Range, ParamArray criteria() As Variant) As Variant Dim i As Integer Dim result As Variant result = 0 On Error Resume Next ' Ignore divide by zero errors result = Application.WorksheetFunction.AverageIfs(data_range, criteria) On Error GoTo 0 ' Re-enable error handling If IsError(result) Then ' Handle other errors result = 0 End If SafeAverageIfs = result End Function
使用此函数,您可以为任意数量的条件计算数据范围的平均值,例如:
=SafeAverageIfs(data_range, criteria_range1, criteria1, criteria_range2, criteria2)