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))