vba - 保持 GPA 的滚动平均值,不出现 div/0 错误

标签 vba excel

本质上我是说,从所有 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 年引入来处理这个特定问题。第一个条件告诉函数我们想要平均值,第二个条件告诉函数排除错误。第三个是范围。

![enter image description here

要处理 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)))

enter image description here

关于vba - 保持 GPA 的滚动平均值,不出现 div/0 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37147468/

相关文章:

excel - VBA从CELL中清除字符

vba - 为什么返回 Range 的 Excel/VBA 用户定义的默认属性的行为与 Range 不同?

vba - Word vba - 如何在模块中存储字符串值?

excel - 双 "select row based on value in column"

excel - 在access vba中调用excel函数

vba - 查找换行符并添加新行的 Excel VBA 宏?

Excel VBA .查找范围异常

javascript - 在 NodeJS 中将大 XLSX(超过 600MB)解析/转换为 CSV

vba - 确定带有日期的单元格是否包含特定年份

excel - 在 Excel 工作表中搜索文本并将单元格范围提取到表格中