This question already has answers here:
Tolerant average (ignore #NA, etc.)

(3个答案)


3年前关闭。





我正在寻找一个代码,以忽略数据列中的所有#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)


提前谢谢了。

最佳答案

我将冒被低估的风险,并为您提供一个更简单但方便的技巧:

=AVERAGEIF(myRange,"<1e100")


(前提是您的范围内没有这么大的数字)。

09-28 14:45