我正在寻找一个代码来忽略数据列中的所有#N / A值,并找到所有剩余单元格的平均值,并将此平均值返回到单元格。目前我有这个代码;如果所选数据范围不包含#N / A,则它有效,但如果有一些#N / A数据点,则整个平均值仅返回#N / A.
我也尝试过这段代码而无济于事(DateRange是用户在我的工作表中指定的日期范围,我想显示在单元格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)
非常感谢提前。
答案 0 :(得分:3)
我将面临被投票的风险并给你一个更简单但更方便的技巧来尝试:
=AVERAGEIF(myRange,"<1e100")
(如果您的范围内没有这么大的数字)。
答案 1 :(得分:1)
或者您可以使用SpecialCells()方法:
Range("O5").Formula = "=AVERAGE(" & range(DateRange).SpecialCells(xlCellTypeFormulas,xlNumbers).address & ")"
或者,如果您只需要值而不是公式,则返回值:
Range("O5").Value=WorksheetFunction.Average(range(DateRange).SpecialCells(xlCellTypeFormulas,xlNumbers))