首页 > 解决方案 > 如何排除#VALUE!或#DIV/0!在使用 VBA 计算平均值的列中

问题描述

我有一种情况来计算一列的平均值(该列有许多带有数字的行和一些带有#DIV/0!and的行#VALUE!)。

我有一个用于计算平均函数的宏。如果它充满了数字,那么它很容易计算列的平均值,但如果有一些#VALUE!#DIV/0!在一个单元格中。然后它返回空白单元格。如何排除#VALUE!and#DIV/0!错误并仅对数字取平均值。

我有超过 5K 文件来计算平均值。

Private Function data As Boolean
    Dim Avg_velocity  As String
    Dim Avg_length As String
    Avg_velocity  = Application.WorksheetFunction.Average(Sheets("Data").Range("K5:K650"))
    Avg_length  = Application.WorksheetFunction.Average(Sheets("Data").Range("I7:I607"))

    Sheets("Log").Range("A2:AI2").Insert
    Sheets("Log").Cells(2, "AA").value = Avg_velocity
    Sheets("Log").Cells(2, "AB").value = Avg_length
End Function

由于#VALUE 影响的平均值!

标签: vbaexcelerror-handlingaverage

解决方案


这样的事情应该可以正常工作:

Option Explicit

Public Sub TestMe()

    Dim myRng1  As Range
    Dim myCell  As Range
    Dim myRng2  As Range

    Set myRng1 = Range("A1:A5")

    For Each myCell In myRng1
        If Not IsError(myCell) Then
            If Not myRng2 Is Nothing Then
                Set myRng2 = Union(myRng2, myCell)
            Else
                Set myRng2 = myCell
            End If
        End If
    Next myCell

    If Not myRng2 Is Nothing Then myRng2.Select

End Sub

它通过范围并仅拾取不是错误的单元格:

在此处输入图像描述


推荐阅读