0

(http://stackoverflow.com/questions/5283466/calculate-moving-average-in-excel 似乎有些相关。我很想知道非 vba 的方法。)

我的数据透视表有源数据,可以计算一个人在过去 36 天内的销售额。数据透视表中的每一天 os 1 列,并且人名在行上。

其中一些人在第 1 天、第 2 天等没有销售,可能只有 3 天他们在第 14、15 和 16 天销售了一些东西。无论他们的顺序如何,我都想找到最近的销售数据(最接近数据透视表的右边缘)并计算三个销售额增长,例如,如果 C20 的任何一天有更多销售额,C20/C19 将 > 1。可以通过减去 1 并更改为百分比来增加。问题是,如果一个人只有 d10、d11、d12 的销售额,那么我如何在 Excel 中输入一个通用公式来表示“查找最近的连续销售额,然后计算这个比率”?对于过去三天有销售的人来说,这很容易。硬编码在哪里寻找每个销售价值会很混乱。

     d1   d2   d3   d4...d7   d8   d9...d34  d35  d36   mostrecentincrease nextrecent
ant   1    5    7                                       7/5=1.4            5/1=5
bat                   ...10   11   12...                12/11=1.blah       11/10=1.1
cat   2    6    9   13
dog                                           19   20   20/19=1.blah       19/blank=0
elf   4                                                 4/dnexist=0
4

1 回答 1

0

我这里没有 excel,但我希望这将引导您获得正确的结果(如果那是您的列表分隔符,请使用,而不是):;

  1. 销售额定义为给定行的从 d1 到 d36 的值范围(或使用实际范围)
  2. 使用这些数组公式计算每一行的最后一个值的位置(使用 ctrl+shift+enter 而不是在编写这些公式后只输入):
    position_1 =max(if(sales<>0;column(sales)))
    position_2 =max(if((sales<>0)*(column(sales)<>position_1);column(sales)))
    position_3 =max(if((sales<>0)*(column(sales)<>position_1)*(column(sales)<>position_2);column(sales)))
  3. 检索值:
    value_1 =index(sales;position_1)
  4. 做一些错误处理(=iferror(...;0))等......
于 2012-06-15T02:26:52.567 回答