【发布时间】:2018-04-07 00:17:13
【问题描述】:
我正在尝试编写一个公式,让我可以找到每个第 n 个单元格的平均值,其中 n 由用户在另一个单元格中指定,但是我的数据范围中有很多 #N/A 单元格,我希望在计算平均值时忽略这些值。
这是我目前所拥有的;它获取单元格 C3 中的数据并返回单元格 D3 中每个第 n 个单元格的平均值,并且 n 在单元格 L11 中指定。
=AVERAGE(OFFSET($C$3, (ROW() - ROW($D$3))*$L$11,,$L$11,))
这很有效,但是当范围内有 #N/A 时会失败,返回 #N/A。我在下面尝试了这个公式,但它只为前 n 个单元格返回正确的值,而为其余的单元格返回 0。
=AVERAGE(IF(ISNUMBER((OFFSET($C$3, (ROW() - ROW($G$3))*$L$11,,$L$11,))),(OFFSET($C$3, (ROW() - ROW($G$3))*$L$11,,$L$11,))))
任何帮助将不胜感激!先感谢您。
【问题讨论】:
-
您是否将其作为数组公式输入(Ctrl+Shift+Enter)?
-
@z32a7ul 当我将其作为数组公式输入时,它会返回 #DIV/0!,但是当我像普通公式一样按 Enter 键时,它会起作用,但仅适用于第一个单元格。跨度>
-
如果你写的是 Sum 而不是 Average,它会返回 0 吗?
-
@z32a7ul 是的,除了第一个单元格之外,它返回 0!多么奇怪。
-
这个公式中的
(ROW() - ROW($D$3))应该做什么?在第 3 行中,它将为 0,因此Offset将偏移 0。在第 4 行中,它将为 1,因此Offset将偏移 1 *L11。在第 5 行中,它将是 2,因此Offset将偏移 2 *L11。我怀疑这不是你想要的。一般来说,您可以像这样使用AVARAGEIF:=AVERAGEIF(OFFSET($C$3,(ROW()-ROW($D$3))*$L$11,,$L$11),"<>#N/A")
标签: excel