【问题标题】:Averageif and Offset Function in Excel to get a Rolling AverageExcel中的Averageif和Offset函数获得滚动平均值
【发布时间】:2015-04-03 02:25:30
【问题描述】:

我有一堆连续的行,我试图根据一个标准对最后 90 个行进行平均。平均值需要位于单个单元格中,而不是计算运行平均值的列中。我想出了如何计算最后 90 行的平均值,但我无法在平均之前正确添加 if 函数以满足标准。

数据:

sale type (b)        Data(c)      Rownumber (E) 
a                     45             1
b                     35             2 
c                     36             3 
c                     56             93

这是正常工作的平均功能AVERAGE(OFFSET(E2,COUNTA(E:E)-1,-2,-90)).

这是我尝试运行的 AVERAGEIF 函数,它给出了不正确的数据:

=AVERAGEIF(B:B,I15,OFFSET(E2,COUNTA(E:E)-1,-2,-90))

I15 在这种情况下,单元格是我要匹配的销售类型。

提前感谢您的帮助!

【问题讨论】:

  • 在你的例子中,销售类型是字符串的数据类型,而你想要的平均值是数字的数据类型,做那种逻辑测试是不合逻辑的。
  • 我想根据销售类型对 c 列(数据)进行平均。

标签: excel offset moving-average


【解决方案1】:
=AVERAGEIF(OFFSET(B2,COUNTA(E:E)-2,0,-90),$I$15,OFFSET(C2,COUNTA(E:E)-2,0,-90))

首先:你需要从你的行中输入“-2”,而不是“-1”,你没有得到最后的 90 和 -1 ..(通过将数据中的记录更改为“999”来测试它)郊区。当 AVG 发生巨大变化时,您会看到它获得了该值。)

第二:无论如何,您的和范围必须匹配..高度。所以在两者中使用相同的偏移公式。

为了稍微优化这一点,您可以在另一列中计算“COUNTA(E:E)-2”,命名它,然后在两种情况下都引用它(这样 Excel 只计算一次,而不是两次)。 ;)

另外,如果 I15 单元格是单个单元格,您可能需要 $I$15 以确保安全。我认为在这种情况下这并不重要,只是对不属于范围的单个孤立单元格这样做的习惯:)

【讨论】:

  • 感谢您的帮助!恐怕我不清楚这个问题。您提供的公式似乎计算了小于 90 的任何行数的平均值。但是,我只需要平均值返回 90 行。例如,如果我在第 95 行之后输入第 1 行,则第 1 行不应该包含在计算中,因为公式应该告诉它返回第 5 行 (95-90)。目前,如果我这样做,公式仍然计算第 1 行的结果。
  • 啊,我明白了.. 看看 Barry 的反应然后......这可能就是你想要的。
【解决方案2】:

如果您实际上在 E 列中有(数据的)行号,您可以使用 AVERAGEIFS 并仅使用基于 E 列的另一个条件,如下所示:

=AVERAGEIFS(C:C,B:B,I15,E:E,">"&MAX(E:E)-90)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    • 2020-04-23
    • 2021-04-14
    • 1970-01-01
    • 2019-01-20
    相关资源
    最近更新 更多