VBA代码忽略列中的所有#N / A值来计算Average

我正在寻找代码来忽略数据列中的所有#N / A值,并find所有剩余单元格的平均值,并将此平均值返回给单元格。 目前我有这个代码; 如果select的数据范围不包含#N / A,则它可以工作,但如果有一些#N / A数据点,则整个平均值仅返回#N / A。

我也试过这个代码,并没有用(DateRange是用户在我的工作表中指定的date范围,我想显示单元格O5中返回的值):

Range("O5").Value = Worksheets("Sheet1").Range(DateRange).Formula = "=AVERAGE(IF(ISNUMBER(DateRange)),DateRange" 

没有#N / A值的工作代码:

 Dim DataPts As Range Set DataPts = Range(FromDateCell, ToDateCell).Offset(0, 1) Range("O5").Value = Application.Average(DataPts) 

提前谢谢了。

我将冒着被低估的风险,并给你一个更简单但方便的伎俩来尝试:

 =AVERAGEIF(myRange,"<1e100") 

(只要你没有这么大的数字在你的范围内)。

或者你可以使用SpecialCells()方法:

 Range("O5").Formula = "=AVERAGE(" & range(DateRange).SpecialCells(xlCellTypeFormulas,xlNumbers).address & ")" 

或者,如果您只需要该而不是返回公式

 Range("O5").Value=WorksheetFunction.Average(range(DateRange).SpecialCells(xlCellTypeFormulas,xlNumbers))