我有一种情况来计算列的平均值(此列包含许多带有数字的行,有些行带有#DIV/0!
和#VALUE!
)。
我有一个用于计算平均函数的宏。如果它的数字是满的,那么它很容易计算列的平均值,但是如果单元格中有一些#VALUE!
或#DIV/0!
。然后它返回空白单元格。如何排除#VALUE!
和#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
答案 0 :(得分:1)
像这样的东西应该可以正常工作:
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
它通过该范围并且只接收不是错误的单元格:
答案 1 :(得分:1)
你也可以通过提供一个非常大的数字标准来使用AverageIf忽略错误,如下所示:
Avg_velocity = Application.WorksheetFunction.AverageIf(Sheets("Data").Range("K5:K650"), "<9E307")
答案 2 :(得分:1)
还应该能够使用聚合函数
=Application.worksheetFunction.Aggregate(1,6,range)