本质上我是说,从所有 4 个学期的平均值开始,如果 Sem 4 平均值为“0”或有 #div/0 错误,则只需取 sem 1-3 平均值,如果 Sem 3 平均值为 0 或 # div/0 然后只取 sem 1-2 平均值,依此类推。
我已经收到错误消息“无法获取工作表函数类的平均属性。”
Sub sem1avg()
If w = 0 Then
Worksheets("Sheet1").Range("H1") = "N/A"
ElseIf w > 0 Then
Application.WorksheetFunction.Average (Range("B2:B10"))
End If
End Sub
Sub sem2avg()
If x = 0 Then
Call sem1avg
ElseIf x > 0 Then
Worksheets("Sheet1").Range.cell(H1) = _
Application.WorksheetFunction.Average(B11, B23)
End If
End Sub
Sub sem3avg()
If y = 0 Then
Call sem2avg
ElseIf y > 0 Then
Worksheets("Sheet1").Range(H1) = _
Application.WorksheetFunction.Average(B11, B23, E11)
End If
End Sub
Sub sem4avg()
Dim w As Long
Dim x As Long
Dim y As Long
Dim z As Long
w = Worksheets("Sheet1").Range("B11")
x = Worksheets("Sheet1").Range("B23")
y = Worksheets("Sheet1").Range("E11")
z = Worksheets("Sheet1").Range("E23")
If z = 0 Then
Call sem3avg
ElseIf z > 0 Then
Worksheets("Sheet1").Range("H1") = _
Application.WorksheetFunction.Average("B11, B23, E11, E23")
End If
End Sub
最佳答案
当然,您可以只使用 AGGREGATE() 函数:
=AGGREGATE(1,6,B11,E11,B23,E23)
AGGREGATE() 函数于 2010 年引入来处理这个特定问题。第一个条件告诉函数我们想要平均值,第二个条件告诉函数排除错误。第三个是范围。
要处理 0
和错误,此公式将执行此操作:
=SUM(IF(ISNUMBER(B11),B11),IF(ISNUMBER(B23),B23),IF(ISNUMBER(E11),E11),IF(ISNUMBER(E23),E23))/SUM(IF(ISNUMBER(B11),IF(B11>0,1)),IF(ISNUMBER(B23),IF(B23>0,1)),IF(ISNUMBER(E11),IF(E11>0,1)),IF(ISNUMBER(E23),IF(E23>0,1)))
关于vba - 保持 GPA 的滚动平均值,不出现 div/0 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37147468/